我在 ASP 中有这段代码:
Public Function ComputeCredentialHash(ByVal timestamp As DateTime, ByVal id As String, ByVal authKey As String) As String
Dim sig As String = timestamp.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ") & id & authKey
Dim sigdata As Byte() = System.Text.Encoding.ASCII.GetBytes(sig)
Dim md5 As System.Security.Cryptography.MD5 = New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim md5Hash As String = System.Convert.ToBase64String(md5.ComputeHash(sigdata))
Return md5Hash
End Function
我需要编写一个 PHP 函数来做同样的事情。到目前为止,我有:
function ComputeCredentialHash ($timestamp, $id, $authKey) {
$sigData = mb_convert_encoding($timestamp.$id.$authKey, "ASCII", "auto");
$md5 = md5($sigData);
$md5Hash = base64_encode($md5);
echo "ComputeCredentialHash => $md5Hash<br/>Sig Data => $sigData<br/>MD5 Sig => $md5<br/>";
return $md5Hash;
}
但这不起作用。我确定这是由于该ASCII.GetBytes
功能,但我不确定如何转换它,因为我不确定它的作用。看起来它只是返回字节数,但这对我来说真的没有意义(为什么它会给你一些如此通用的东西来制作散列)。无论如何,如果有人可以提供帮助,我将不胜感激。