C#与PHP的md5计算结果不同的解决方法
问题重现
这个API是当时给Lyra应用做激活用的,遂打开Lyra试了下,却发现一切正常,于是可以排除服务端的问题
放出导致错误的源码(来自MSDN):
publicstringCalculateMD5Hash(stringinput)
{
//step1,calculateMD5hashfrominput
MD5md5=System.Security.Cryptography.MD5.Create();
byte[]inputBytes=System.Text.Encoding.ASCII.GetBytes(input);
byte[]hash=md5.ComputeHash(inputBytes);
//step2,convertbytearraytohexstring
StringBuildersb=newStringBuilder();
for(inti=0;i<hash.Length;i++)
{sb.Append(hash[i].ToString(“X2”));
}
returnsb.ToString();
}
实质
MD5有很多版本,其实这段代码并没有错,但是php的md5函数默认返回的是32位小写,而以上这一段返回的是16位小写
于是想办法把这个func改为32位小写输出即可
publicstaticStringmd5(Strings)
{
MD5md5=newMD5CryptoServiceProvider();
byte[]bytes=System.Text.Encoding.UTF8.GetBytes(s);
bytes=md5.ComputeHash(bytes);
md5.Clear();
stringret="";
for(inti=0;i<bytes.Length;i++)
{
ret+=Convert.ToString(bytes[i],16).PadLeft(2,'0');
}
returnret.PadLeft(32,'0');
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短