Delphi中的加密算法(MD5,MD4,MD3...)

在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。
在Uses单元中引用IdHashMessageDigest单元,再写如下代码即可以达到MD5的实现。

示例代码
procedureTForm1.Button1Click(Sender:TObject);
var
MyMD5:TIdHashMessageDigest5;
Digest:T4x4LongWordRecord;
begin
MyMD5:=TIdHashMessageDigest5.Create;
Digest:=MyMD5.HashValue('');
ShowMessage('32:'+MyMD5.AsHex(Digest));//显示32个字符长度的MD5签名结果
ShowMessage('16:'+Copy(MyMD5.AsHex(Digest),9,16));//显示16个字符长度的MD5签名结果
end;
说明:
MyMD5.HashValue函数中可以是一个字符串或是一个流对象,它返回的结果类型为T4x4LongWordRecord的MD5签名后结果
MyMD5.AsHex函数是将T4x4LongWordRecord的Md5签名转换成为十六进制的MD5签名字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
int main(int argc, char *argv[]) { int i = 0; bool bOnce = true; char szPath[RH_MAX_PATH]; char szAbsPath[RH_MAX_PATH]; char szOrgPath[RH_MAX_PATH]; char szTemp[RH_MAX_BUFFER]; int iErrorCode = 0; CHashManager hashmgr; getcwd(szOrgPath, RH_MAX_PATH); //No arguments? if(argc == 1) { printInfo(); return(RH_NO_ARGS); } memset(szPath, 0, RH_MAX_PATH); bOnce = true; hashmgr.SelectAllAlgorithms(true); for(i = 1; i = RH_MAX_BUFFER) continue; // Non-parsable option argument, ignore fmtArgument(argv[i], szTemp); // Format the argument, i.e. remove all special chars if(strcmp(szTemp, "help" ) == 0) printInfo(); if(strcmp(szTemp, "h" ) == 0) printInfo(); if(strcmp(szTemp, "?" ) == 0) printInfo(); if(strcmp(szTemp, "version" ) == 0) printInfo(); if(strcmp(szTemp, "v" ) == 0) printInfo(); if(strcmp(szTemp, "fullpath") == 0) hashmgr.SetOption(OPT_FULLPATH, true); if(strcmp(szTemp, "f" ) == 0) hashmgr.SetOption(OPT_FULLPATH, true); if(strcmp(szTemp, "nopath" ) == 0) hashmgr.SetOption(OPT_FULLPATH, false); if(strcmp(szTemp, "rcrsv" ) == 0) hashmgr.SetOption(OPT_RECURSIVE, true); if(strcmp(szTemp, "norcrsv" ) == 0) hashmgr.SetOption(OPT_RECURSIVE, false); if(strcmp(szTemp, "recur" ) == 0) hashmgr.SetOption(OPT_RECURSIVE, true); if(strcmp(szTemp, "norecur" ) == 0) hashmgr.SetOption(OPT_RECURSIVE, false); if(strcmp(szTemp, "r" ) == 0) hashmgr.SetOption(OPT_RECURSIVE, true); if(strcmp(szTemp, "all" ) == 0) hashmgr.SelectAllAlgorithms(true); if(strcmp(szTemp, "a" ) == 0) hashmgr.SelectAllAlgorithms(true); if(strcmp(szTemp, "none" ) == 0) hashmgr.SelectAllAlgorithms(false); if(strcmp(s
Delphi是一种编程语言,可以用来开发Windows应用程序。MD5是一种常见的哈希算法,用于对给定的消息进行加密。 要在Delphi编写MD5解密代码,首先需要使用一个名为"IdHashMessageDigest5"的组件。这个组件可以通过Delphi的Internet Direct (Indy) 组件包进行访问。Indy组件包是用于实现网络通信的一个开源组件库。 下面是一个基本的Delphi MD5解密代码示例: 1. 在Delphi创建一个新的窗体应用程序。 2. 添加一个TIdHashMessageDigest5组件到窗体上。 3. 添加一个TEdit控件和一个TButton按钮控件到窗体上,并分别设置它们的名称和标题。 4. 在TButton的OnClick事件编写以下代码: ```delphi procedure TForm1.Button1Click(Sender: TObject); var MD5Hash: TStringStream; begin // 创建一个TStringStream对象来保存MD5哈希值 MD5Hash := TStringStream.Create; try // 使用TIdHashMessageDigest5组件计算MD5哈希值,并将结果存储在MD5Hash IdHashMessageDigest51.HashString(Edi1.Text, MD5Hash); // 将MD5哈希值显示在TEdit控件 Edit2.Text := MD5Hash.DataString; finally MD5Hash.Free; end; end; ``` 这个代码将会获取TEdit控件的文本,使用TIdHashMessageDigest5组件计算其对应的MD5哈希值,并将结果显示在另一个TEdit控件。 需要注意的是,MD5是一种单向哈希算法,它是不可逆的。因此,上述代码实际上是计算给定文本的MD5哈希值,而不是对MD5哈希值进行解密。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值