gifts2017

Внешняя компонента хеширования данных.

Опубликовал Ийон Тихий (cool.vlad4) в раздел Программирование - Внешние компоненты

Внешняя компонента хеширования данных, HMAC (SHA-1 ,RIPEMD,Tiger,Whirlpool,MD5 и другие)

Предыстория:

  1. По мотивам http://forum.infostart.ru/forum86/topic136695/
  2. Я забанен до некоторого момента на форуме, ответить в комментах не могу. Решено сделать публикацию.
  3. Изначально использовалась библиотека botan (  http://botan.randombit.net/  ) , но не смог скомпилировать ее под Windows без использования  c++ redistributable (есть подозрение , что это и невозможно на текущий момент, но я совсем с плюсами на Вы) , а это дополнительная зависимость, которой не хотелось иметь (имея c++ redistributable , естественно все получилось и есть версия компоненты с Botan, но выкладывать ее не буду)
  4. Поэтому решил использовать библиотеку Crypto++ ( http://www.cryptopp.com/ ) , которая распространяется под лицензией Boost Software License https://ru.wikipedia.org/wiki/Boost_Software_License
  5. Библиотека с Crypto++ сделана вместе со статьей за один присест ))) , поэтому есть вероятность появления неожиданностей и рекомендую все таки сразу не использовать в продакшн коде, а проверить ее.  (к сожалению серьезных тестов я не делал, ограничившись проверкой пары хэшей с сайта freeformatter.com/hmac-generator.html и сравнением с результатами кода в питоне)
  6. Методы 

 

СлучайноеЧисло(МинимальноеЗначение,Максимальное значение) -  Возвращает случайное число заданного диапазона

RandomNumber

 

ХешированиеДанныхКодом (НаименованиеАлгоритма, Сообщение, Ключ)

DataHashingMAC

Возвращает результат(ДвоичныеДанные) хеширования HMAC алгоритма заданного первым аргументом  .

Например:

 

НаименованиеАлгоритма = "HMAC(SHA-1)";
Сообщение = "Тестовая строка";
Ключ  = "Тестовый ключ857";
ДвоичныеДанные  = ОбъектВК.ХешированиеДанныхКодом (НаименованиеАлгоритма, Сообщение, Ключ);
ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "hexBinary");
Данные = ФабрикаXDTO.Создать(ТипДвоичныеДанные,ДвоичныеДанные);
Сообщить(Данные.ЛексическоеЗначение);

Будет сообщение  - 00634d9276c7e8fa3b8e4d3015a22f4a8438b

 

 

ХешированиеДанных (НаименованиеАлгоритма, Сообщение)

DataHashing

Возвращает результат(ДвоичныеДанные) хеширования алгоритма заданного первым аргументом  .

В принципе особого смысла метод не имеет для алгоритмов, которые уже есть возможность использовать в программе . SHA-1 , например или MD5. С другой стороны в Crypto++ реализовано гораздо больше алгоритмов . Например : Whirlpool

 PS. Замечание: при вызове метода с неизвестными именами алгоритмов или неправильными именами , программа будет завершаться с ошибкой. Это будет исправлено на выдачу исключения.

Скачать файлы

Наименование Файл Версия Размер
AddInNativeCryptoPP_86_64.zip 10
.zip 449,04Kb
04.09.15
10
.zip 0.1 449,04Kb Скачать
Пример использования компоненты 10
.epf 232,10Kb
04.09.15
10
.epf 1 232,10Kb Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа