Вычисление хэш-суммы по алгоритму SHA-512

Вычисление хэш-сумм MD, SHA при помощи CAPICOM
Вычисление хэш-суммы по алгоритму ГОСТ Р 34.11-94
Вычисление хэш-суммы по алгоритму MD5

Появилась задачка по оповещению пользователей через службу коротких сообщений (СМС). Проанализировав рынок операторов, был выбран сервис SMS.RU. Приступил к изучению API функций данного сервиса и выяснил, что одна из функций требует хэш-сумму sha512(пароль+token) для усиленной авторизации.

Пошарил  по синтакс-помошнику, но стандартной функции не нашел (естественно, платформа 1С создавалась не для выполнения сложным математических операций).

Заглянул в Библиотеку стандартных подсистем (БСП) и нашел код вычисления хэш-суммы по алгоритму MD5, который занимает 300 строк кода. Грусть-печаль меня посетила.

Спросил у Googl'а, ничего внятного он мне не ответил, но намекнул на использование криптографических API функций операционной системы. Вот что у меня получилось:

// Вычисление хэш-суммы по алгоритму SHA-512.
//
// Параметры:
// Строка - строка, строка для которой вычисляется хэш-сумма.
//
Функция ВычислитьХешСтрокиПоАлгоритмуSHA512(Знач Строка) Экспорт

Попытка
// Вычисление хэш-суммы.
UTF8Encoding = Новый COMОбъект("System.Text.UTF8Encoding");
SHA512Managed = Новый COMОбъект("System.Security.Cryptography.SHA512Managed");
МассивБайтов = SHA512Managed.ComputeHash_2(UTF8Encoding.GetBytes_4(Строка));

// Преобразование хэш-суммы в строку.
StringBuilder = Новый COMОбъект("System.Text.StringBuilder");
Для Каждого Элемент Из МассивБайтов Цикл
StringBuilder.AppendFormat("{0:x2}", Элемент);
КонецЦикла;
Возврат StringBuilder.ToString();
Исключение
ВызватьИсключение "Ошибка вычисления хэш-суммы по алгоритму SHA-512!
|Попробуйте установить/обновить "".NET Framework"".";
КонецПопытки;

КонецФункции // ВычислитьХешСтрокиПоАлгоритмуSHA512()


Функция вычисляет хэш-сумму от заданной строки и возвращает её в виде 128 символьной строки в шестнадцатеричном формате.

Описание используемых COM-объектов:

Минус данного решения - функция будет работать только на семействе операционных систем Windows.

Комментарии

  1. На инфостарте выложили силами встроенного языка

    ОтветитьУдалить

Отправить комментарий