Как сделать хэш MD5 строки с Delphi?
Как сделать хэш строку с Delphi?
Ответ 1
Если вы хотите получить дайджест MD5 и установите Indy, вы можете сделать это:
uses SysUtils, IdGlobal, IdHash, IdHashMessageDigest;
with TIdHashMessageDigest5.Create do
try
Result := TIdHash128.AsHex(HashValue('Hello, world'));
finally
Free;
end;
Самые популярные алгоритмы поддерживаются в Delphi Cryptography Package:
- Haval
- MD4, MD5
- RipeMD-128, RipeMD-160
- SHA-1, SHA-256, SHA-384, SHA-512,
- Tiger
Обновление
DCPCrypt
теперь поддерживается Warren Postma, и источник можно найти здесь.
Ответ 2
Если вам нужна строка MD5 hash как hexadeciamal, и у вас установлен Delphi XE 1, поэтому у вас есть Indy 10.5.7 компоненты, которые вы может сделать это:
использует IdGlobal, IdHash, IdHashMessageDigest;
class function getMd5HashString(value: string): string;
var
hashMessageDigest5 : TIdHashMessageDigest5;
begin
hashMessageDigest5 := nil;
try
hashMessageDigest5 := TIdHashMessageDigest5.Create;
Result := IdGlobal.IndyLowerCase ( hashMessageDigest5.HashStringAsHex ( value ) );
finally
hashMessageDigest5.Free;
end;
end;
Ответ 3
Я обычно использую DCPCrypt2 (Delphi Cryptography Package) от Дэвида Бартона (Город в небе).
Он также содержит следующие алгоритмы шифрования:
- Blowfish
- Cast 128
- Листинг 256
- DES, 3DES
- Лед, тонкий лед, лед2
- IDEA
- Марс
- misty1
- RC2, RC4, RC5, RC6
- Rijndael (новый AES)
- Serpent
- Чай
- Twofish
Обновление
DCPCrypt
теперь поддерживается Warren Postma, и источник можно найти здесь.
Ответ 4
Если все, что вы хотите сделать, это использовать словарь, и вы не ищете безопасности, то:
В Delphi 2009 и выше значения хэша для строк могут быть созданы с помощью
BobJenkinsHash
(Value, Length(Value) * SizeOf(Value), 0)
где Value - строка.
http://docwiki.embarcadero.com/VCL/en/Generics.Defaults.BobJenkinsHash
Ответ 5
TurboPower Lockbox поддерживает:
- MD-5,
- SHA-1 и
- весь семейство SHA-2, включая недавно опубликованные хэши SHA-512/224 и SHA-512/256.
Ответ 6
Spring Для проекта Delphi - http://www.spring4d.org - имеет реализацию для ряда хэшей SHAxxx, хеша MD5, а также числа CRC функции
Ответ 7
Вы также можете использовать API WindowsCrypto с Delphi:
Там есть единица, которая обертывает все CryptoAPI. Вы также можете использовать Lockbox, который теперь является открытым исходным кодом.
В конце концов вы можете поддерживать практически любые алгоритмы Hash с помощью Delphi. Пример Indy, вероятно, ближе всего к Delphi, поскольку Indy включен в большинство версий Delphi. В остальном вам нужно либо использовать библиотеку, либо написать еще один код для доступа к CryptoAPI или реализовать его самостоятельно.
Ответ 8
Это модификация ответа devstopfix, который был принят.
В текущей версии Indy вы можете упростить хэш-строки и потоки. Пример:
function MD5String(str: String): String;
begin
with TIdHashMessageDigest5.Create do
try
Result := HashStringAsHex(str);
finally
Free;
end;
end;
Используйте HashString
, HashStringAsHex
, HashBytes
, HashBytesAsHex
, HashStream
, HashStreamAsHex
. Преимущество состоит в том, что вы также можете указать текстовое кодирование