Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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
与php中的C#Encoding.UTF8.GetBytes等效_C#_Php - Fatal编程技术网

与php中的C#Encoding.UTF8.GetBytes等效

与php中的C#Encoding.UTF8.GetBytes等效,c#,php,C#,Php,我用C#编写了一个例子,并且必须用PHP编写同样的例子 request = request.Replace(sign, string.Empty); byte[] sha1Request; using (var shaM = new SHA1Managed()) { sha1Request = shaM.ComputeHash(Encoding.UTF8.GetBytes(request)); } log.InfoFormat($"request={request}. sha1Requ

我用C#编写了一个例子,并且必须用PHP编写同样的例子

request = request.Replace(sign, string.Empty);

byte[] sha1Request;
using (var shaM = new SHA1Managed())
{
    sha1Request = shaM.ComputeHash(Encoding.UTF8.GetBytes(request));
}
log.InfoFormat($"request={request}. sha1Request={Convert.ToBase64String(sha1Request)}. Sign={sign}", request, Convert.ToBase64String(sha1Request));
var pubKey = (RSACryptoServiceProvider)FrontInterface.GetCertificate(checkFrontCertificateCod.Value).PublicKey.Key;
var isValid = pubKey.VerifyData(Encoding.UTF8.GetBytes(Convert.ToBase64String(sha1Request)), new SHA1CryptoServiceProvider(), Convert.FromBase64String(sign));
if (!isValid)
{
    throw new Exception("Wrong digital sign");
}
所以,在php中,我可能不会将字符串转换为字节,并且行
sha1Request=shaM.ComputeHash(Encoding.UTF8.GetBytes(request))
将使用PHP:
sha1Request=sha1(请求,true)
我说得对吗?如果没有,请帮助我转换在PHP这一行。

非常感谢。

请注意,sha1实际上不应该再用于与安全相关的应用程序,它已经过时了

C版本:

string text=”“;
字节[]sha1;
使用(var shaM=new SHA1Managed())
{
sha1=shaM.ComputeHash(Encoding.UTF8.GetBytes(text));
}
字符串编码=Convert.ToBase64String(sha1);
控制台。写入(编码);
PHP版本:

$text = "<Hällo World>";

// Encode as UTF8 if necessary (May not be necessary if string is already utf-8)
$text = utf8_encode($text);

// Calculate SHA1 
$sha1 = sha1($text, TRUE);

// Convert to Base64
$encoded = base64_encode($sha1);

echo($encoded);
$text=”“;
//必要时编码为UTF8(如果字符串已经是utf-8,则可能不需要)
$text=utf8\u编码($text);
//计算SHA1
$sha1=sha1($text,TRUE);
//转换为Base64
$encoded=base64_encode($sha1);
回声(编码);
两个版本都应该输出

1nSiStZRa/quRru7Sqe+ejupqfs=

请注意,只有当您使用的字符串实际上尚未在utf8中编码时,才应该存在对
utf8\u encode
的调用

如果字符串是*.php文件中的文本,则这取决于文件在磁盘上的存储方式。(它使用的字符集)


如果字符串是从web请求、数据库或读取文件中检索到的,这也取决于web表单、数据库或外部文件使用的字符集。

这既不是Python也不是PHP…可能是Java?我宁愿猜C#或其他什么,但我不知道。简单地说,这种语言似乎有一个字符串类型和一个字节类型,并且必须在两者之间转换。PHP本质上只有一个字节类型(尽管它称之为
string
),所以在PHP中不需要这个步骤。
$text = "<Hällo World>";

// Encode as UTF8 if necessary (May not be necessary if string is already utf-8)
$text = utf8_encode($text);

// Calculate SHA1 
$sha1 = sha1($text, TRUE);

// Convert to Base64
$encoded = base64_encode($sha1);

echo($encoded);