开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 12917|回复: 7
收起左侧

[C#求助] C#的HMACMD5 用易语言实现结果不一样...

[复制链接]
发表于 2021-12-11 01:15:25 | 显示全部楼层 |阅读模式   河北省衡水市
C# 里有个HMACMD5 的函数 想用易实现 前面结果都和C#一样 最后一步计算 HMACMD5 就不一样了..
感觉代码都是照搬翻译的也没几行 就是不行....

估计我对下面这一行理解有误...  
byte[] HMAC5 = new HMACMD5(vHash).ComputeHash(key);

易语言是这样转译的:
kHash = Hash模板 (key, #CALG_MD5)   ' 和 C# ComputeHash(key) 结果一样
HMAC5 = HMAC_md5 (vHash, kHash)    '和 C# HMAC5  不一样....

hmac_test.7z

46.7 KB, 下载次数: 23, 下载积分: 精币 -2 枚

C#和易语言 源码

C# , 易语言 代码图

C# ,  易语言 代码图

C# , 易语言 结果对比

C# ,  易语言 结果对比

签到天数: 8 天

 楼主| 发表于 2021-12-11 02:33:17 | 显示全部楼层   河北省衡水市
lao3 发表于 2021-12-11 02:26
那是你翻译结果对不上 我还以为是HMAC_MD5问题

易语言改成

谢谢大佬 这次对上了 你上个回复我就感觉我翻译错了 .ComputeHash(key);这个应该是置入密钥 而不是计算MD5后在置入
.版本 2

PrintHex (“HMAC5”, HMAC5)  ' 和 C# 不一样!!!!!!!!
PrintHex (“HMAC5”, HMAC_md5 (kHash, vHash))  ' 和 C# 不一样!!!!!!!!
PrintHex (“HMAC5”, HMAC_md5 (到字节集 (data), vHash))  ' 和 C# 不一样!!!!!!!!
PrintHex (“HMAC5”, HMAC_md5 (到字节集 (data), kHash))  ' 和 C# 不一样!!!!!!!!
PrintHex (“HMAC5”, HMAC_md5 (key, vHash))  ' 和 C# 不一样!!!!!!!!
PrintHex (“HMAC5”, HMAC_md5 (key, kHash))  ' 和 C# 不一样!!!!!!!!

开始运行被调试程序
* vHash: B6 D7 67 D2 F8 ED 5D 21 A4 4B 0E 58 86 68 0C B9
* kHash: B1 E4 61 5E 1F 63 62 FC C7 3B 0E C7 60 23 8B 06
* HMAC5: 44 90 4B F1 9F B7 F6 E7 E0 91 87 29 B9 5E E4 B7
* HMAC5: 1E 00 0C 7E 60 0C A1 6D FB BB BA 5B 4B CA CC 08
* HMAC5: 81 2B 90 31 A7 86 20 5B 6D BF 7F 60 8F DD 83 BE
* HMAC5: 34 3F 21 51 29 3C C4 C9 6D 53 6F 86 79 69 72 24
* HMAC5: 84 B8 20 0B 4B 51 B4 52 30 72 4D 06 C8 74 1E 02
* HMAC5: E1 AD 07 08 BC A0 21 B1 67 3D 67 0E 57 5F E3 82
被调试易程序运行完毕

倒数第二个匹配上了 和您的代码完全一致 万分感谢!!
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 15 天

发表于 2021-12-11 02:26:28 | 显示全部楼层   福建省厦门市
285275928 发表于 2021-12-11 02:10
不是的 C# 是原版代码结果是对的  是易语言的对不上号...

data= 字符串1+字符串2   我直接用的 "22"  =  ...

那是你翻译结果对不上 我还以为是HMAC_MD5问题

易语言改成

[JavaScript] 纯文本查看 复制代码
HMAC5 = HMAC_md5 (key, vHash)
PrintHex (“HMAC5”, HMAC5) 

评分

参与人数 1好评 +1 精币 +2 收起 理由
285275928 + 1 + 2 很赞同,谢谢!

查看全部评分

回复 支持 反对

使用道具 举报

签到天数: 8 天

 楼主| 发表于 2021-12-11 02:10:06 | 显示全部楼层   河北省衡水市
lao3 发表于 2021-12-11 01:52
首先你的C#代码错了, key和data位置反了

[mw_shl_code=csharp,true]byte[] HMAC5 = new HMACMD5(vHash).Co ...

不是的 C# 是原版代码结果是对的  是易语言的对不上号...

data= 字符串1+字符串2   我直接用的 "22"  = "2"+"2"
然后取出data的md5 在hmacmd5计算
原版是这样的
byte[] hash = new HMACMD5(MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(data1.ToLower() + data2))).ComputeHash(key);
我只是拆分开来写 这样看着不乱.... 结果是一样的 c#直接通过
回复 支持 0 反对 1

使用道具 举报

结帖率:100% (1/1)

签到天数: 15 天

发表于 2021-12-11 01:52:43 | 显示全部楼层   福建省厦门市
首先你的C#代码错了, key和data位置反了

[C#] 纯文本查看 复制代码
byte[] HMAC5 = new HMACMD5(vHash).ComputeHash(key); 


应该是

[C#] 纯文本查看 复制代码
byte[] HMAC5 = new HMACMD5(key).ComputeHash(vHash);


还有,如果你是要计算data的哈希, vHash应该是直接传data

[C#] 纯文本查看 复制代码
vHash = Encoding.ASCII.GetBytes(data);


再来, 易语言

[C#] 纯文本查看 复制代码
HMAC5 = HMAC_md5 (到字节集(data), key)


这样应该就一样了

评分

参与人数 1好评 +1 精币 +2 收起 理由
285275928 + 1 + 2 很赞同,谢谢!

查看全部评分

回复 支持 反对

使用道具 举报

签到天数: 8 天

 楼主| 发表于 2021-12-11 01:44:10 | 显示全部楼层   河北省衡水市
MrSean 发表于 2021-12-11 01:20
key本来就是字节集不需要再到字节集了吧?

key之前用的hex后来改成字节集了忘了删除到字节集了 其实到字节集和直接用是一样的
回复 支持 反对

使用道具 举报

结帖率:41% (7/17)

签到天数: 2 天

发表于 2021-12-11 01:27:40 | 显示全部楼层   福建省厦门市
MrSean 发表于 2021-12-11 01:20
key本来就是字节集不需要再到字节集了吧?

一眼望穿
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 1 天

发表于 2021-12-11 01:20:35 | 显示全部楼层   浙江省衢州市
key本来就是字节集不需要再到字节集了吧?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表