PHP相当于.NET代码

时间:2014-12-19 06:09:30

标签: php .net sha1

我正在将.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));
}

请帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

差异背后的原因是,PHP使用ASCII编码进行哈希计算。

在C#中,您可以将UTF8Encoding替换为ASCIIEncoding,以获得相同的结果。

答案 1 :(得分:0)

最后我找到了解决方案:

这是最终代码,相当于.net代码:

function HashString($str) {
  return base64_encode(sha1($str,true));
}

我在sha1函数中添加了“true”。