Hasher — генерация различных типов хешей

Давно ничего не писал в блог. На днях изучал OpenSSL и признаться честно, я даже влюбился в эту библиотеку.
Ранее, например, md5-хеш в Delphi создавал с помощью модуля IdHashMessageDigest, идущей вместе с Indy:

uses IdHashMessageDigest;
...
function md5(const s:ansistring):ansistring;
begin
	with TIdHashMessageDigest5.Create do
	try
		Result:=AnsiLowerCase(HashStringAsHex(s));
	finally
		Free;
	end;
end;

На днях необходимо было внедрить в проект RSA. Сначала ринулся браться за CryptoAPI, но увы, данная библиотека не расшифровывает данные public key, зашифрованные private key. У различных компонентов своеобразная структура ключей, отличная от OpenSSL (да и у CryptoAPI она в *blob формате). Поэтому решил взяться за OpenSSL и не пожалел. :) Библиотека просто суперская!
Теперь в своих приложениях буду использовать только OpenSSL, например, вот как выглядит md5 функция на OpenSSL:

function OpenaSSL_md5(const source:ansistring):AnsiString;
var
  _md5:md5_ctx;
  i:Byte;
  Hash:array[0..MD5_DIGEST_LENGTH] of AnsiChar;
begin
  if MD5_Init(@_md5)<>1 then exit;

  MD5_Update(@_md5, @source[1], Length(source));
  MD5_Final(@Hash, @_md5);

  for i:=0 to MD5_DIGEST_LENGTH-1 do
    result:=result+IntToHex(Ord(Hash[I]), 2);

  result:=AnsiLowerCase(result);
end;

Буквально за 15-20 минут накидал программу Hasher, создающую различные типы хешей.

Hasher - программа для создания хешей

Hasher — программа для создания хешей

Можно сгенерировать следующие хеши: mdc2, md4, md5, sha, sha-1, sha-224, sha-256, sha-384, sha-512, ripemd-160.
Если кого-то интересуют исходные коды какого вида хеша, пишите в комментариях.
Скачать программу можно по ссылке ниже.

Скачать с Яндекс.Диск