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); КонецЦикла; Возврат Хеш; КонецФункции