SHA1-将C#/ASP.Net函数转换为PHP SHA1

SHA1-将C#/ASP.Net函数转换为PHP SHA1,c#,php,asp.net,encryption,sha1,C#,Php,Asp.net,Encryption,Sha1,请帮助我将下面给出的C#/ASP SHA1函数转换为兼容的PHP SHA1函数 public string SHA1(string data) { byte[] hash = new SHA1CryptoServiceProvider().ComputeHash( new UTF8Encoding().GetBytes(data)); string str = string.Empty; foreach (byte num

请帮助我将下面给出的C#/ASP SHA1函数转换为兼容的PHP SHA1函数

public string SHA1(string data)
{
    byte[] hash = new SHA1CryptoServiceProvider().ComputeHash(
                         new UTF8Encoding().GetBytes(data));
    string str = string.Empty;
    foreach (byte num in hash)
       str = str + string.Format("{0,0:x2}", (object) num);
    return str;
}
我想要上面的PHP中的SHA1函数,它可以在PHP中返回相同的值

谢谢

PHP有一个内置的sha1()函数,它执行所有这些步骤并提供十六进制输出。它应该是兼容的,尽管您必须确保字符串编码和填充在两种语言中的处理方式完全相同,否则您将得到不同的哈希输出

$str = 'apple';

if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') {
    echo "Would you like a green or red apple?";
}

将代码置于{和}之间。谢谢Jeff的快速回答,但由于我是新手,我不知道在我的问题上面提到的C#代码中使用了什么字符串编码。公共字符串SHA1(字符串源){byte[]hash=new SHA1CryptoServiceProvider().ComputeHash(new UTF8Encoding().GetBytes(源));string str=string.Empty;foreach(hash中的byte num)str=str+string.Format(“{0,0:x2},(object)num”);return str;}看起来C是UTF8编码数据,UTF8Encoding().GetBytes(源代码)在调用ComputeHash()函数之前,您必须确保PHP字符串也是utf8编码的。如果不是,您可以使用PHP函数utf8_encode(string)将其转换为utf8。@Jeff InventorChromeOS help me