Author Archives: Tfumiaki

[C#]HMAC-SHA512で署名する方法

超まとめ

System.Security.Cryptography.HMACSHA512クラスを使えば、HMAC-SHA512のハッシュを計算できます。
ハッシュを計算したいデータをByte[]にしてコンストラクタ引数に渡せばOK。

using System;
using System.Text;

namespace HMAC_SHA512Sample
{
  class Program
  {
    static void Main(string[] args)
    {
      HMAC_SHA512();
    }

    private static void HMAC_SHA512()
    {
      // HMAC-SHA512を計算する文字列
      var testStr = "param1=val1&param2=val2";
      // キーにする文字列
      var secretKey = "password";

      // 各文字列をバイト配列にする
      byte[] data = Encoding.UTF8.GetBytes(testStr);
      byte[] keyData = Encoding.UTF8.GetBytes(secretKey);

      using (var hmacSha512 = new System.Security.Cryptography.HMACSHA512(keyData))
      {
        byte[] hashValue = hmacSha512.ComputeHash(data);
        Console.WriteLine(BitConverter.ToString(hashValue).Replace("-", "").ToLower());
      }
    }
  }
}

このコードの実行結果は

051464ad12cd03cf6c0f968317dfcededafeb8a267d6da7869e0588aa887bde6f4f0fe2077aed2a32a748c9e2d59ddc2bb7c3f034a4aa9fc9b0752c750daae94

です。

補足

.NET Core 2.1.4で確認しました。
.NET FrameworkでももちろんOK。

参考資料

https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.hmacsha512(v=vs.110).aspx