C#中的SHA1和MD5加密和PHP中相应算法结果为什么不同

时间:2022-10-28 17:25:01
如题
同样是对hellworld加密
php的结果为:
sha1:
6adfb183a4a2c94a2f92dab5ade762a47889a5a1

md5:
fc5e038d38a57032085441e7fe7010b0

而C#中

   1  
   2  // SHA1 hash:
   3  string h1 = Convert.ToBase64String(new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes("helloworld")));
   4  
   5  // MD5 hash:
   6  string h2 = Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes("helloworld")))

结果为:
sha1:
/F4DjTilcDIIVEHn/nAQsA==
md5:
at+xg6SiyUovktq1redipHiJpaE=

相差好大,而且长度都不一样了。


5 个解决方案

#1


PHP不会。
应该不会有这种问题,是不是编码的问题?

#2


摘要的结果当然是一样的,不一样的是你在C#里又把结果转换成了Base64的字符串,这当然就不一样了,你又加工了一遍嘛。
FC-5E-03-8D-38-A5-70-32-08-54-41-E7-FE-70-10-B0 这是C#里md5实际的结果和php里的fc 5e 03 8d 38 a57032085441e7fe7010b0 怎么会不一样呢,一个字节一个字节看看

#3


结果是一样的,但是你要在转换成Base64的字符串之前比较。

#4


能否告知如何进行字符转换,我将byte.toString() 都已经不是我想要的内容了而且长度也不对啊。

#5


使用toString(value,radix)已经解决了

#1


PHP不会。
应该不会有这种问题,是不是编码的问题?

#2


摘要的结果当然是一样的,不一样的是你在C#里又把结果转换成了Base64的字符串,这当然就不一样了,你又加工了一遍嘛。
FC-5E-03-8D-38-A5-70-32-08-54-41-E7-FE-70-10-B0 这是C#里md5实际的结果和php里的fc 5e 03 8d 38 a57032085441e7fe7010b0 怎么会不一样呢,一个字节一个字节看看

#3


结果是一样的,但是你要在转换成Base64的字符串之前比较。

#4


能否告知如何进行字符转换,我将byte.toString() 都已经不是我想要的内容了而且长度也不对啊。

#5


使用toString(value,radix)已经解决了