Вычисление хэш-суммы по алгоритму SHA-512
Вычисление хэш-сумм MD, SHA при помощи CAPICOM
Вычисление хэш-суммы по алгоритму ГОСТ Р 34.11-94
Вычисление хэш-суммы по алгоритму MD5
Появилась задачка по оповещению пользователей через службу коротких сообщений (СМС). Проанализировав рынок операторов, был выбран сервис SMS.RU. Приступил к изучению API функций данного сервиса и выяснил, что одна из функций требует хэш-сумму sha512(пароль+token) для усиленной авторизации.
Функция вычисляет хэш-сумму от заданной строки и возвращает её в виде 128 символьной строки в шестнадцатеричном формате.
Описание используемых COM-объектов:
Вычисление хэш-суммы по алгоритму ГОСТ Р 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.
На инфостарте выложили силами встроенного языка
ОтветитьУдалить