首页 / 知识

如何使用Delphi哈希字符串?

2023-04-15 02:30:00

如何使用Delphi哈希字符串?

How do I hash a string with Delphi?

如何使用Delphi对字符串进行MD5哈希处理?


如果要MD5摘要并安装了Indy组件,则可以执行以下操作:

1
2
3
4
5
6
7
8
uses SysUtils, IdGlobal, IdHash, IdHashMessageDigest;

with TIdHashMessageDigest5.Create do
try
    Result := TIdHash128.AsHex(HashValue('Hello, world'));
finally
    Free;
end;

Delphi密码包中支持最受欢迎的算法:

  • 哈瓦尔
  • MD4,MD5
  • MD128,,160
  • SHA-1,SHA-256,SHA-384,SHA-512,

更新资料
DCPCrypt现在由Warren Postma维护,可以在此处找到源。


如果要将MD5哈希字符串设置为十六进制,并且已安装Delphi XE 1,则可以使用Indy 10.5.7组件,可以执行以下操作:

uses IdGlobal, IdHash, IdHashMessageDigest;

1
2
3
4
5
6
7
8
9
10
11
12
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;

我通常使用David Barton(天空之城)的DCPCrypt2(Delphi密码软件包)。

它还包含以下加密算法:

  • 河豚
  • 演员表128
  • 演员256
  • DES,3DES
  • 冰,薄冰,冰2
  • 理念
  • 火星
  • 迷雾1
  • RC2,RC4,RC5,RC6
  • Rijndael(新的AES)
  • fish鱼

更新资料
DCPCrypt现在由Warren Postma维护,可以在此处找到源。


这是对devstopfix答案的修改,已被接受。

在当前的Indy版本中,您可以更轻松地对字符串和流进行哈希处理。例:

1
2
3
4
5
6
7
8
9
function MD5String(str: String): String;
begin
  with TIdHashMessageDigest5.Create do
    try
      Result := HashStringAsHex(str);
    finally
      Free;
    end;
end;

使用HashStringHashStringAsHexHashBytesHashBytesAsHexHashStreamHashStreamAsHex。好处是您还可以指定文本编码


如果您只想使用字典,而您并不是在寻找安全性,那么:
在Delphi 2009及更高版本中,可以使用以下命令创建字符串的哈希值

BobJenkinsHash (Value, Length(Value) * SizeOf(Value), 0)

其中Value是一个字符串。

http://docwiki.embarcadero.com/VCL/en/Generics.Defaults.BobJenkinsHash


为什么不使用RTL中的system.Hash单元,该单元也包含自Delphi Seattle起的MD5哈希算法?

1
MD5HashCode := THashMD5.GetHashString(ClearTextString);

Spring For Delphi项目-http://www.spring4d.org-实现了许多SHAxxx散列,MD5散列以及许多CRC函数


TurboPower密码箱支持:

  • MD-5,
  • SHA-1和
  • 整个SHA-2系列,包括最近发布的SHA-512 / 224和SHA-512 / 256哈希。

您还可以将WindowsCrypto API与Delphi一起使用:

  • 常规Crypto&Hash演示和资源

那里有一个包装所有CryptoAPI的单元。您还可以使用Lockbox(现已开放源代码)。

最后,您可以使用Delphi支持几乎所有的Hash算法。 Indy示例可能是您在Delphi中最接近本机的示例,因为大多数版本的Delphi中都包含Indy。对于其余部分,您将需要使用库或编写更多代码来访问CryptoAPI或自己实现。


使用ICS,您只需调用位于OverbytecsMD5单元中的StrMD5函数即可。

除了该特定功能外,还有许多其他数据类型和场景的MD5功能。还有其他哈希方法,例如SHA。


字符串对象操作执行

最新内容

相关内容

猜你喜欢