2 процедуры для шифрования строки по алгоритмам SHA256 и SHA512
использую при запросах на некоторые API сайтов
Функция ЗашифроватьSHA256(Строка, СекретныйКлюч)
Соотв16 = Новый Соответствие;
Соотв16.Вставить(0 , "0");
Соотв16.Вставить(1 , "1");
Соотв16.Вставить(2 , "2");
Соотв16.Вставить(3 , "3");
Соотв16.Вставить(4 , "4");
Соотв16.Вставить(5 , "5");
Соотв16.Вставить(6 , "6");
Соотв16.Вставить(7 , "7");
Соотв16.Вставить(8 , "8");
Соотв16.Вставить(9 , "9");
Соотв16.Вставить(10, "a");
Соотв16.Вставить(11, "b");
Соотв16.Вставить(12, "c");
Соотв16.Вставить(13, "d");
Соотв16.Вставить(14, "e");
Соотв16.Вставить(15, "f");
Текст = Новый COMОбъект("System.Text.UTF8Encoding");
Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA256");
Криптография.Key = Текст.GetBytes_4(СекретныйКлюч);
ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Строка)).Выгрузить();
Хеш = "";
Для Каждого Байт Из ХешБайт Цикл
Чс = Цел(Байт/16);
Хеш = Хеш + Прав("0" + Соотв16.Получить(Чс) + Соотв16.Получить(Байт-Чс*16), 2);
КонецЦикла;
Возврат Хеш;
КонецФункции
Функция ЗашифроватьSHA512(Строка, СекретныйКлюч) Экспорт
Соотв16 = Новый Соответствие;
Соотв16.Вставить(0 , "0");
Соотв16.Вставить(1 , "1");
Соотв16.Вставить(2 , "2");
Соотв16.Вставить(3 , "3");
Соотв16.Вставить(4 , "4");
Соотв16.Вставить(5 , "5");
Соотв16.Вставить(6 , "6");
Соотв16.Вставить(7 , "7");
Соотв16.Вставить(8 , "8");
Соотв16.Вставить(9 , "9");
Соотв16.Вставить(10, "a");
Соотв16.Вставить(11, "b");
Соотв16.Вставить(12, "c");
Соотв16.Вставить(13, "d");
Соотв16.Вставить(14, "e");
Соотв16.Вставить(15, "f");
Текст = Новый COMОбъект("System.Text.UTF8Encoding");
Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA512");
Криптография.Key = Текст.GetBytes_4(СекретныйКлюч);
ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Строка)).Выгрузить();
Хеш = "";
Для Каждого Байт Из ХешБайт Цикл
Чс = Цел(Байт/16);
Хеш = Хеш + Прав("0" + Соотв16.Получить(Чс) + Соотв16.Получить(Байт-Чс*16), 2);
КонецЦикла;
Возврат Хеш;
КонецФункции
