简体   繁体   English

等效于 .NET 中的 PHP hash_hmac("sha384", $data, $key)

[英]Equivalent from PHP hash_hmac("sha384", $data, $key) in .NET

In PHP i do following steps:在 PHP 中,我执行以下步骤:

<?php
  $key="mM8Y28b5R7KFe3Y5";   
  $data="298052380sbEUREinzellizenz Spieler SEN329739test120211572380R-00001003authorization19";
  $hash=hash_hmac("sha384", $data, $key);
  echo $hash;
?>

i get following output:我得到以下输出:

f34fb28f6462cde18a92ee854d289ba5aed3cfc07d0abb52cfef3b70028e1b38b098ae17514a9121d43d3d6f684eccd8

I try to do this in .NET with:我尝试在.NET中这样做:

string data = "298052380sbEUREinzellizenz Spieler SEN329739test120211572380R-00001003authorization19";
      string key = "mM8Y28b5R7KFe3Y5";
      string hash = "";
      using (SHA384 sha384Hash = SHA384.Create())
      {
        byte[] sourceBytes = Encoding.ASCII.GetBytes(data);
        byte[] hashBytes = sha384Hash.ComputeHash(sourceBytes);
        hash = BitConverter.ToString(hashBytes).Replace("-", String.Empty).ToLower();
      }

and i get我明白了

77b7eccd4f66b07c66e2c49b83e53bf84dfd4dc67ec60007df4476adfe16d9b0bfdd6e58e9a5008bde4908335d161ef5

i tried also:我也试过:

var keyByte = Encoding.ASCII.GetBytes(key);
      using (HMACSHA256 sha384Hash = new HMACSHA256(keyByte))
      {
        byte[] sourceBytes = Encoding.ASCII.GetBytes(data);
        byte[] hashBytes = sha384Hash.ComputeHash(sourceBytes);
        hash2 = BitConverter.ToString(hashBytes).Replace("-", String.Empty).ToLower();
      }

hash2 is哈希2是

ceaabe254e19d77940ac3edfdf2fa3d1de424d569136e8deb770aa81be5cb24a

i don't get the difference.我不明白区别。 I checked already the Encodings, but i see no differents.我已经检查了编码,但我看不出有什么不同。

What i am doing wrong?我做错了什么?

使用第二个示例,但使用

using (HMACSHA384 sha384Hash = new HMACSHA384(Encoding.ASCII.GetBytes(key)))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM