如何使用Delphi哈希字符串?

如何使用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。


推荐阅读

    linux远程执行多命令?

    linux远程执行多命令?,工具,服务,命令,状态,暂停,代码,底部,时间,地址,系统,L

    红帽子linux操作命令?

    红帽子linux操作命令?,服务,系统,密码,环境,信息,通用,软件,状态,设备,命令,

    linux命令行执行工具?

    linux命令行执行工具?,工具,系统,网络,分析,工作,服务,状态,信息,电脑,发行,s

    linux命令替换字符串?

    linux命令替换字符串?,字符串,文件,批量,首次,数据,命令,内容,方法,用字,结

    linux执行命令后无号?

    linux执行命令后无号?,系统,环境,信息,工具,状态,数据,命令,文件,字符集,环

    linux日常操作命令?

    linux日常操作命令?,工作,系统,地址,信息,命令,目录,基础,管理,操作,功能,lin

    linux周期执行命令?

    linux周期执行命令?,工作,系统,周期,地址,命令,工具,信息,时间,任务,目录,lin

    linux执行命令大全?

    linux执行命令大全?,工作,系统,地址,信息,命令,目录,工具,基础,设备,发行,Lin

    循环执行linux命令?

    循环执行linux命令?,工具,系统,名称,代码,第一,环境,位置,数字,脚本,变量,Lin

    linux命令执行很慢?

    linux命令执行很慢?,软件,系统,工具,分析,机构,服务,培训,教育,数字,数据,Lin

    linux命令行执行py?

    linux命令行执行py?,系统,环境,官网,一致,文件,程序,脚本,源文件,后台,终端,l

    linux查看执行命令?

    linux查看执行命令?,系统,服务,情况,信息,命令,暂停,标准,概念,实时,第一,lin

    linux命令连续执行?

    linux命令连续执行?,连续,通信,工具,数据,代码,命令,设备,系统,发行,情况,如

    linux执行命令卡住?

    linux执行命令卡住?,系统,环境,密码,数据,信息,分析,软件,异常,服务,命令,Lin

    linux拼接字符串命令?

    linux拼接字符串命令?,系统,工作,代码,工具,名称,信息,地址,时间,数据,命令,l

    linux命令执行不动了?

    linux命令执行不动了?,系统,电脑,数据,管理,信息,密码,命令,环境,地方,分析,l

    linux无效对象的命令?

    linux无效对象的命令?,软件,系统,单位,网络,管理,术语,检测,电脑,环境,风险,l

    go操作linux命令?

    go操作linux命令?,系统,工具,环境,软件,标准,网上,最新,信息,设备,电脑,Linux

    linux脚步中执行命令?

    linux脚步中执行命令?,工具,代码,命令,名称,系统,连续,环境,发行,文件,终端,l

    linux命令操作vim?

    linux命令操作vim?,系统,地址,工作,命令,模式,标准,信息,入口,连续,时间,Linu