【发布时间】:2011-08-03 17:24:22
【问题描述】:
尝试使用 HTTPWebRequest 模拟文件上传。客户端使用的是这个开发者MD5.js的Md5.js
在我的 C# 代码中,我正在生成加密字符串
public string PasswordHash(string password, string Key)
{
ASCIIEncoding encoding = new ASCIIEncoding();
HMACMD5 hmacmd = new HMACMD5(encoding.GetBytes(Key));
byte[] bytes = encoding.GetBytes(password);
byte[] byteBuffer= hmacmd.ComputeHash(bytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < buffer3.Length; i++)
{
builder.Append(byteBuffer[i].ToString("x2"));
}
return builder.ToString().ToLower();
}
正在使用的 MD5.js 中的函数是下一个:
function hex_hmac_md5(k, d) {
return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)));
}
使用提琴手我在使用 IE 登录时捕获了密钥以及加密密码。我的代码使用 C# 和相同密钥生成的密码与 JavaScript 方法生成的密码不匹配。我能错过什么?
C#密码:5d2b9c906608d8381cef4c24ff045be7
由网站使用 .js 生成并使用 FIDDLER 捕获的密码:f79a31f85da55aa0e3aca07e06568709
【问题讨论】:
-
贴一个每个方法生成的md5 hash示例
-
仅供参考:加密和创建哈希是两个不同的任务。你可以在这里测试一下你的算法是正确的:fileformat.info/tool/hash.htm
标签: c# javascript md5