Вычисление хэш-сумм MD, SHA при помощи CAPICOM
Вычисление хэш-суммы по алгоритму SHA-512
Вычисление хэш-суммы по алгоритму MD5
Вычисление хэш-суммы по алгоритму ГОСТ Р 34.11-94
Компания Microsoft не советует использовать библиотеку CAPICOM, но без её COM-объектов обойтись трудно. Первым делом необходимо скачать Platform SDK CAPICOM. Этот пакет содержит свободно распространяемые файлы компоненты CAPICOM 2.1.0.1 и примеры её использования. CAPICOM можно использовать для электронной подписи данных и её проверки, хэширования данных, шифрования и расшифровки данных и т.д. После запуска скачанного пакета мастер установки произведет копирование файлов компоненты в указанную папку. В папке ...\Microsoft CAPICOM 2.1.0.2 SDK\Lib\X86 находится файл CAPICOM.dll который нужно зарегистрировать в системе, для этого запустите командную строку от имени администратор и выполните команду regsvr32 CAPICOM.dll:
На этом установка закончена, можно приступать к использованию COM-объектов библиотеки CAPICOM в конфигурации :)
После регистрации библиотеки capicom.dll становится доступен COM-объект HashedData, у которого ProgID = CAPICOM.HashedData.1. Этот объект имеет метод Hash, в который будем передавать строку, и два свойства. Через свойство Algorithm указываем алгоритм вычисления хэш-суммы, а через свойство Value будем получать результат вызова метода Hash. Перед передачей строки в метод Hash производим приведение строки к кодировке UTF-8.
Список поддерживаемых алгоритмов и их значения (Algorithm):
Результат работы функции:
Хэш-сумма представляется в видет N-символьной строки в шестнадцатеричном виде.
Обработку можно скачать по этой ссылке.
Минус данной реализации таков: Microsoft уходит от поддержки библиотеки CAPICOM и требуется установка данной библиотеки (если код будет выполняться на сервере, то у становка требуется только на машине, где установлен сервер 1С:Предприятие)
Вычисление хэш-суммы по алгоритму MD5
Вычисление хэш-суммы по алгоритму ГОСТ Р 34.11-94
Установка CAPICOM
Компания Microsoft не советует использовать библиотеку CAPICOM, но без её COM-объектов обойтись трудно. Первым делом необходимо скачать Platform SDK CAPICOM. Этот пакет содержит свободно распространяемые файлы компоненты CAPICOM 2.1.0.1 и примеры её использования. CAPICOM можно использовать для электронной подписи данных и её проверки, хэширования данных, шифрования и расшифровки данных и т.д. После запуска скачанного пакета мастер установки произведет копирование файлов компоненты в указанную папку. В папке ...\Microsoft CAPICOM 2.1.0.2 SDK\Lib\X86 находится файл CAPICOM.dll который нужно зарегистрировать в системе, для этого запустите командную строку от имени администратор и выполните команду regsvr32 CAPICOM.dll:
Регистрация библиотеки CAPICOM |
Реализация вычисления хэш-суммы
После регистрации библиотеки capicom.dll становится доступен COM-объект HashedData, у которого ProgID = CAPICOM.HashedData.1. Этот объект имеет метод Hash, в который будем передавать строку, и два свойства. Через свойство Algorithm указываем алгоритм вычисления хэш-суммы, а через свойство Value будем получать результат вызова метода Hash. Перед передачей строки в метод Hash производим приведение строки к кодировке UTF-8.
Список поддерживаемых алгоритмов и их значения (Algorithm):
- SHA1 - CAPICOM_HASH_ALGORITHM_SHA1 (0);
- MD2 - CAPICOM_HASH_ALGORITHM_MD2 (1);
- MD4 - CAPICOM_HASH_ALGORITHM_MD4 (2);
- MD5 - CAPICOM_HASH_ALGORITHM_MD5 (3);
- SHA-256 - CAPICOM_HASH_ALGORITHM_SHA_256 (4);
- SHA-384 - CAPICOM_HASH_ALGORITHM_SHA_384 (5);
- SHA-512 - CAPICOM_HASH_ALGORITHM_SHA_512 (6).
// Функция вычисляет хэш-сумму по алгоритмам SHA и MD.
//
// Параметры
// Строка - Строка - исходная строка;
// Алгоритм - Число - алгоритм, по которому вычисляется хэш-сумма.
//
// Возвращаемое значение:
// Строка - хэш-сумма в виде N-символьной строке в шестнадцатеричном формате.
//
&НаСервереБезКонтекста
Функция ВычислитьХэшСумму(Строка, Алгоритм) Экспорт
HashedData = Новый COMОбъект("CAPICOM.HashedData.1");
// Указываем алгоритм хэширования.
HashedData.Algorithm = Алгоритм;
// Передаем данные, строку кодируем в последовательность байтов UTF-8.
UTF8Encoding = Новый COMОбъект("System.Text.UTF8Encoding");
HashedData.Hash(UTF8Encoding.GetBytes_4(Строка));
// Возвращаем вычисленную хэш-сумму.
Возврат HashedData.Value;
КонецФункции // ВычислитьХэшСумму()
Результат работы функции:
Хэш-сумма по алгоритму MD5 от значения 123 |
Обработку можно скачать по этой ссылке.
Минус данной реализации таков: Microsoft уходит от поддержки библиотеки CAPICOM и требуется установка данной библиотеки (если код будет выполняться на сервере, то у становка требуется только на машине, где установлен сервер 1С:Предприятие)
При применении в 1с77, "неправильно" считает хеш сумму. Или не преобразовывает автоматически хешируемую строку в utf-8 кодировку
ОтветитьУдалить