我正在将.net项目转换为PHP。但无法转换以下代码:
public static string HashString(string value)
{
SHA1 hasher = new SHA1CryptoServiceProvider();
UTF8Encoding enc = new UTF8Encoding();
byte[] hashInBytes = hasher.ComputeHash(enc.GetBytes(value));
return Convert.ToBase64String(hashInBytes);
}
到目前为止,我已经做到了这一点,但结果并不相同:
function HashString($str) {
return base64_encode(sha1($str));
}
请帮助,谢谢。
答案 0 :(得分:1)
差异背后的原因是,PHP使用ASCII编码进行哈希计算。
在C#中,您可以将UTF8Encoding
替换为ASCIIEncoding
,以获得相同的结果。
答案 1 :(得分:0)
最后我找到了解决方案:
这是最终代码,相当于.net代码:
function HashString($str) {
return base64_encode(sha1($str,true));
}
我在sha1函数中添加了“true”。