Поиск по блогу

суббота, 28 февраля 2015 г.

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

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

Как вычислять хэш-сумму по алгоритму SHA-512 описано в этой статье. SHA-512 применяется для защиты информации и считается довольно устойчивой хэш-функцией. Но не стоит забывать о старом добром MD5, который имеет 128 битную хэш-сумму, выполняется быстрее чем SHA-1, SHA-2 и отлично подходит для создания "отпечатков" большого объема данных.

Для вычисления хэш-суммы по алгоритму MD5 воспользуемся COM-объектами, нам потребуется объект с ProgID - System.Security.Cryptography.MD5CryptoServiceProvider. Он имеет метод ComputeHash, который возвращает хэш-сумму в виде 16-байтового массива.

Напишем функцию, которая будет вычислять значение хэш-суммы для заданной строки и возвращать его в виде 32-х символьной строки в шестнадцатеричном формате:
// Вычисление хэш-суммы по алгоритму MD5.
//
// Параметры:
// Строка - строка, строка для которой вычисляется хэш-сумма.
//
// Возвращаемое значение:
// Строка - 32-х символьная строка в шестнадцатеричном виде.
//
Функция ВычислитьХешСтрокиПоАлгоритмуMD5(Знач Строка) Экспорт

Попытка

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

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

Возврат StringBuilder.ToString();

Исключение
ВызватьИсключение "Ошибка вычисления хэш-суммы по алгоритму MD5!
 |Попробуйте установить/обновить "".NET Framework"".";
КонецПопытки;

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


Описание используемых COM-объектов:
System.Security.Cryptography.MD5CryptoServiceProvider
System.Text.UTF8Encoding
System.Text.StringBuilder

Пример вычисления хэш-суммы MD5 в 1С
Обработку можно скачать по этой ссылке.

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

Комментариев нет:

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