Tôi có chức năng sau trong C#, hàm băm mà tôi cần chuyển đổi thành PHP. Tôi đã thử một vài điều trong PHP nhưng tôi không nhận được kết quả tương tự (Tôi không ở tất cả các tốt với NET)Chuyển đổi hàm băm C# thành PHP
private static string GetSignature(string args, string privatekey)
{
var encoding = new System.Text.ASCIIEncoding();
byte[] key = encoding.GetBytes(privatekey);
var myhmacsha256 = new HMACSHA256(key);
byte[] hashValue = myhmacsha256.ComputeHash(encoding.GetBytes(args));
string hmac64 = Convert.ToBase64String(hashValue);
myhmacsha256.Clear();
return hmac64;
}
One (sai) nỗ lực trong PHP là thế này:
function encode($data,$key)
{
return base64_encode(hash_hmac('sha256', $data, $key));
}
các ĐÁP
Một biến thể nhẹ của những gì đã được đề xuất dưới đây bởi DampeS8N làm việc cho tôi.
function encode($data,$key)
{
iconv_set_encoding("input_encoding", "ASCII");
iconv_set_encoding("internal_encoding", "ASCII");
iconv_set_encoding("output_encoding", "ASCII");
return base64_encode(hash_hmac('sha256', $data, $key, true));
}
Hãy cũng không phải là tham số thứ tư của hash_hmac - bây giờ thiết lập là true cho sản lượng nguyên như dữ liệu nhị phân
Bạn nên chấp nhận câu trả lời DampeS8Ns nếu anh ấy chỉ cho bạn đúng hướng. – jgauffin