Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SHA1:PHP和C的不同结果#_C#_Php_Sha1 - Fatal编程技术网

C# SHA1:PHP和C的不同结果#

C# SHA1:PHP和C的不同结果#,c#,php,sha1,C#,Php,Sha1,我有一个在C#中生成哈希的代码: 结果是: G7xY+gb35Lw4HlDnTZP89FU3Khk= Dg+x7F8lsC/r9O8PNskgJ/MwNgU= 我尝试在PHP中获得相同的结果: $str = mb_convert_encoding("Ю-41241624.05.1991","UTF-8"); $hash = sha1($str,true); $base64 = base64_encode($hash); echo $base64; 但结果是: G7xY+g

我有一个在C#中生成哈希的代码:

结果是:

G7xY+gb35Lw4HlDnTZP89FU3Khk=
Dg+x7F8lsC/r9O8PNskgJ/MwNgU=
我尝试在PHP中获得相同的结果:

$str = mb_convert_encoding("Ю-41241624.05.1991","UTF-8");
$hash = sha1($str,true);       
$base64 = base64_encode($hash);  
echo $base64;
但结果是:

G7xY+gb35Lw4HlDnTZP89FU3Khk=
Dg+x7F8lsC/r9O8PNskgJ/MwNgU=
您好,您的问题在“YU”字符中。你的c代码看起来不错。当您仅使用此字符调试代码时,您将得到值为208 174的字节数组,这实际上是UTF8中的Ю字符。因此,c#代码应该可以很好地工作,来自c#的sha1应该很好

您能否仅从php获取字符的字节数?它也应该是208174。 如果删除此字符,则哈希字符串应相等。

您好,您的问题在于“YU”字符。你的c代码看起来不错。当您仅使用此字符调试代码时,您将得到值为208 174的字节数组,这实际上是UTF8中的Ю字符。因此,c#代码应该可以很好地工作,来自c#的sha1应该很好

您能否仅从php获取字符的字节数?它也应该是208174
如果删除此字符,则哈希字符串应相等。

只需删除mb_convert_encoding(),如果字符串已为UTF-8,则会将事情搞砸。
当我在没有该函数的情况下运行代码时,我得到了正确的结果:

只要去掉mb\u convert\u encoding(),如果字符串已经是UTF-8,它就会把事情搞砸。
当我在没有该函数的情况下运行代码时,我得到了正确的结果:

我的问题是,我试图从Windows控制台运行PHP脚本,并从控制台传递“str”。这就是我弄错哈希的原因。当我在脚本中写入字符串时,它显示了正确的结果。我的问题是,我试图从Windows控制台运行PHP脚本,并从控制台传递“str”。这就是我弄错哈希的原因。当我在脚本中写入字符串时,它会显示正确的结果。