бинарное представление хеша. 1с 8.2

1. ja-maik-a 03.08.22 09:33 Сейчас в теме
Здравствуйте
Необходимо получить 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 символов), а не шестнадцатеричное.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ImHunter 315 03.08.22 09:52 Сейчас в теме
(1) Так возвратите Массив, который получается после
Массив = оMD5.ComputeHash_2(Массив);
3. ja-maik-a 03.08.22 10:00 Сейчас в теме
(2) возвращается Массив COMSafeArray на 16 элементов чисел. Как из него получить 16 символьное представление?
4. ishelper 03.08.22 10:16 Сейчас в теме
(3)
Массив COMSafeArray на 16 элементов чисел. Как из него получить 16 символьное представление?
Использовать функцию Символ() в цикле.

Вот только среди этих "чисел" вполне могут быть такие, что даже увидеть вы их не сможете. Например, с кодом 0.
5. ja-maik-a 03.08.22 10:26 Сейчас в теме
(4)Мне видеть и не обязательно. Конечная цель из этого хеша получить Base64 строку. Может можно без получения 16символьного представления закодировать этот массив в Base64?
7. ishelper 03.08.22 10:36 Сейчас в теме
(5)
Может можно без получения 16символьного представления закодировать этот массив в Base64?
Можно попробовать: записать содержимое этого массива в двоичный файл (или в ПотокВПамяти), а потом - скормить его Base64Строка.

Образец: https://forum.mista.ru/topic.php?id=839595
8. ja-maik-a 03.08.22 10:38 Сейчас в теме
(7)
ВычислитьХешСтрокиПоАлгоритмуMD5

платформа 8.2. Потока в памяти еще нет в ней. А вот как перевести этот массив в двоичные данные и записать в файл, тоже не могу найти
6. RustamZz 03.08.22 10:32 Сейчас в теме
(1) Не кошерно, в наше время, использовать COM. В типовых есть ВычислитьХешСтрокиПоАлгоритмуMD5 и возвращает, возможно то что вы подразумеваете: ЧислоВШестнадцатеричномПредставлении
9. ja-maik-a 03.08.22 10:39 Сейчас в теме
(6)конфигурация застряла во времени на платформе 8.2
а там ничего нет для работы с хешированием еще
10. nomad_irk 76 03.08.22 10:43 Сейчас в теме
(9)хороший повод для обновления платформы до актуальной версии.
12. RustamZz 03.08.22 10:45 Сейчас в теме
(10) Это не платформенная, там просто математика, может медленнее считает, но мне кажется создавать com все равно дольше.
11. RustamZz 03.08.22 10:43 Сейчас в теме
(9) Я из УПП 1.3.157 взял она тоже на 8.2, можете оттуда позаимствовать и первую и вторую функцию - это БСП если все официально приобретено то и на БСП есть право.
13. SlavaKron 03.08.22 11:13 Сейчас в теме
(9) 8.2 - это именно платформа или версия совместимости?
14. ja-maik-a 03.08.22 11:16 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот