PHP 中的 HMACSHA1 等价物
HMACSHA1 equivalent in PHP
我正在尝试在 C# 和 PHP 中使用 HMACSHA1 进行加密,但我得到了不同的结果。 C#部分完成。我想让 PHP 部分生成与 C# 部分相同的结果。
C#
string key = "x94IudsnSUWCDSiSxRU5qDSRs88=";
string text = "The quick brown fox jumps over the lazy dog";
HMACSHA1 hmac = new HMACSHA1();
hmac.Key = Convert.FromBase64String(key);
byte[] hashedData = hmac.ComputeHash(Encoding.UTF8.GetBytes(text));
string hash = Convert.ToBase64String(hashedData, Base64FormattingOptions.None);
Console.WriteLine(WebUtility.UrlEncode(hash));
PHP
$key = "x94IudsnSUWCDSiSxRU5qDSRs88=";
$text = "The quick brown fox jumps over the lazy dog";
$hash = base64_encode(hash_hmac('sha1', $text, $key,true));
echo urlencode($hash);
结果:
C#:uAG0CDzyuEq7zbQ5ZfpVrb1ZUcA%3D
PHP: hx2c5SS6xI%2B8hQBoUqsWQT4KwP4%3D
您可能必须先对 php 中的密钥进行 base64 解码,然后再将其传递给 hash_hmac 函数
我正在尝试在 C# 和 PHP 中使用 HMACSHA1 进行加密,但我得到了不同的结果。 C#部分完成。我想让 PHP 部分生成与 C# 部分相同的结果。
C#
string key = "x94IudsnSUWCDSiSxRU5qDSRs88=";
string text = "The quick brown fox jumps over the lazy dog";
HMACSHA1 hmac = new HMACSHA1();
hmac.Key = Convert.FromBase64String(key);
byte[] hashedData = hmac.ComputeHash(Encoding.UTF8.GetBytes(text));
string hash = Convert.ToBase64String(hashedData, Base64FormattingOptions.None);
Console.WriteLine(WebUtility.UrlEncode(hash));
PHP
$key = "x94IudsnSUWCDSiSxRU5qDSRs88=";
$text = "The quick brown fox jumps over the lazy dog";
$hash = base64_encode(hash_hmac('sha1', $text, $key,true));
echo urlencode($hash);
结果:
C#:uAG0CDzyuEq7zbQ5ZfpVrb1ZUcA%3D
PHP: hx2c5SS6xI%2B8hQBoUqsWQT4KwP4%3D
您可能必须先对 php 中的密钥进行 base64 解码,然后再将其传递给 hash_hmac 函数