我有一个 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");
}
Run Code Online (Sandbox Code Playgroud)
所以,我可能不会在 php 中将字符串转换为字节,而sha1Request = shaM.ComputeHash(Encoding.UTF8.GetBytes(request));
行将在 PHP 中:sha1Request =sha1(request, true);
我说得对吗?如果没有,请帮我将这一行转换为 PHP。多谢。