Delphi 中文MD5签名和Java MD5签名不一致的问题研究

项目中有个用Java做服务器,Delphi做客户端的项目,需要MD5加密,遇到中文就遇到MD5不一致的问题。

"张三"   Java MD5 615db57aa314529aaa0fbe95b3e95bd3  

第一轮,直接加密

json_md5:=LowerCase(Md5.HashStringAsHex('张三'));

Delphi MD5 ea03fcb8c47822bce772cf6c07d0ebbb

第二轮,考虑可能是中文没有转UTF-8编码的原因导致

json_md5:=LowerCase(Md5.HashStringAsHex(utf8encode('张三')));

Delphi MD5 ea03fcb8c47822bce772cf6c07d0ebbb  失败

 

第三轮:更换编码器

result:= LowerCase(Md5.HashStringAsHex('张三',IndyTextEncoding(Tencoding.UTF8)));

Delphi MD5 615db57aa314529aaa0fbe95b3e95bd3    成功

 

问题解决

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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哈希值进行解密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值