Delphi で文字列の MD5 ハッシュを作成するにはどうすればよいですか?
10 に答える
MD5 ダイジェストが必要で、Indyコンポーネントがインストールされている場合は、次のようにします。
uses SysUtils, IdGlobal, IdHash, IdHashMessageDigest;
with TIdHashMessageDigest5.Create do
try
Result := TIdHash128.AsHex(HashValue('Hello, world'));
finally
Free;
end;
最も一般的なアルゴリズムは、Delphi 暗号化パッケージでサポートされています。
- ハヴァル
- MD4、MD5
- 熟したMD-128、熟したMD-160
- SHA-1、SHA-256、SHA-384、SHA-512、
- 虎
更新
DCPCrypt
は現在Warren Postmaによって管理されており、ソースはここにあります。
私は通常、David Barton ( City in the Sky ) のDCPCrypt2 ( Delphi Cryptography Package ) を使用します。
また、次の暗号化アルゴリズムも含まれています。
- フグ
- キャスト 128
- キャスト 256
- DES、3DES
- 氷、薄氷、氷2
- 考え
- 火星
- ミスティ1
- RC2、RC4、RC5、RC6
- Rijndael (新しい AES)
- 蛇
- お茶
- ツーフィッシュ
更新
DCPCrypt
は現在Warren Postmaによって管理されており、ソースはここにあります。
これは、承認された 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
ます。利点は、テキストエンコーディングも指定できることです
辞書を使用するだけで、セキュリティを求めていない場合は、次のようにします
。Delphi 2009以降では、文字列のハッシュ値を次のように作成できます。
BobJenkinsHash
(Value, Length(Value) * SizeOf(Value), 0)
ここで、Valueは文字列です。
http://docwiki.embarcadero.com/VCL/en/Generics.Defaults.BobJenkinsHash
TurboPower ロックボックスは以下をサポートします:
- MD-5、
- SHA-1 および
- 最近公開された SHA-512/224 および SHA-512/256 ハッシュを含む SHA-2 ファミリ全体。
Delphi で WindowsCrypto API を使用することもできます。
そこには、すべての CryptoAPI をラップするユニットがあります。現在オープンソースになっている Lockbox を使用することもできます。
最終的には、Delphi でほぼすべてのハッシュ アルゴリズムをサポートできます。Indy の例は、ほとんどのバージョンの Delphi に Indy が含まれているため、Delphi でネイティブに使用できる最も近いものです。残りの部分については、ライブラリを使用するか、さらにコードを記述して CryptoAPI にアクセスするか、自分で実装する必要があります。
ICS を使用して、OverbytecsMD5 ユニットにある StrMD5 関数を呼び出すだけです。
その特定の関数に加えて、他のデータ型とシナリオ用の MD5 関数が多数あります。SHA などの他のハッシュ方式もあります。