Здравствуйте
Необходимо получить MD5-хеш бинарное представление хеша (последовательность из 16 символов), а не шестнадцатеричное (32 символа).
Функцию по получению хеша взял на инфостарте. Как получить представление в 16 символов?
Функция MD5Eng(КодируемаяСтрока)Экспорт
оMD5 = Новый COMОбъект("System.Security.Cryptography.MD5CryptoServiceProvider");
оEnc = Новый COMОбъект("System.Text.UTF8Encoding");
оStr = Новый COMОбъект("System.Text.StringBuilder");
// переводим в байтовый массив
Массив = оEnc.GetBytes_4(КодируемаяСтрока);
// MD5
Массив = оMD5.ComputeHash_2(Массив);
// переведем обратно из байтового массива в строку
КолЭлементовМассива = Массив.GetLength();
Для Ит = 0 ПО КолЭлементовМассива - 1 Цикл
оStr.AppendFormat("{0:x02}", Массив.GetValue(Ит));
КонецЦикла;
оMD5 = NULL;
оEnc = NULL;
Возврат оStr.ToString();
КонецФункции
Показать
конечная задача:
получите MD5-хеш строки пароля md5(pass)
выполните конвертацию хеша в Base64.
Сервисы хеширования обычно возвращают ответ в виде 32‑символьного шестнадцатеричного числа. Для кодирования в Base64 следует использовать бинарное представление хеша (последовательность из 16 символов), а не шестнадцатеричное.
(4)Мне видеть и не обязательно. Конечная цель из этого хеша получить Base64 строку. Может можно без получения 16символьного представления закодировать этот массив в Base64?
(1) Не кошерно, в наше время, использовать COM. В типовых есть ВычислитьХешСтрокиПоАлгоритмуMD5 и возвращает, возможно то что вы подразумеваете: ЧислоВШестнадцатеричномПредставлении
(9) Я из УПП 1.3.157 взял она тоже на 8.2, можете оттуда позаимствовать и первую и вторую функцию - это БСП если все официально приобретено то и на БСП есть право.