C# Base64でエンコードされたHMACSHA256ハッシュ文字列

Base64でエンコードされたHMACSHA256ハッシュ文字列

C#を使ってHMAC SHA256を利用する場合 System.Security.CryptographyをusingするとHMACを継承したHMACSHA256と云うクラスが入っています。そのHMACSHA256クラスを利用します。Base64文字列に変換するにはConvert.ToBase64String()を使います。

下記はコード例です

private string CreateSignature(string inputStr, string secretKey)
{
	HMACSHA256 hmacsha256 = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey));
	var signature = hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(inputStr));
	var base64Signature = Convert.ToBase64String(signature);
	return base64Signature;
}

下記のように、inputStrとsecretKeyに文字列を入れて実行すると、Base64エンコードされたHMACSHA256が作られます。

string inp = textBox1.Text;
string outp = this.CreateSignature(inp, "mjeld1234");
textBox2.Text = outp;
Base64でエンコードされたHMACSHA256ハッシュ文字列
Base64エンコードされた文字列結果

「KEmHEG1L9Y/2kRXNf/zIMfwf4NKIXX70qqjjIgCx3qc=」と表示されました

PythonHMAC SHA256 コード例は下記URLです

Python Base64でエンコードされたHMACSHA256ハッシュ文字列

Base64でエンコードされたHMACSHA256ハッシュ文字列

HMAC SHA256ハッシュした文字列をBase64エンコードした文字列は、REST APIでよく利用されています。Pythonの標準ライブラリだけでHMAC SHA256ハッシュ化しBase64エンコードも可能です。コード例は、2行程度です。

import hashlib
import hmac
import base64

secretKey = 'mjeld1234'
message = '文字列'

signature = hmac.new(key=bytes(secretKey,'utf-8'), msg=bytes(message,'utf-8'), digestmod=hashlib.sha256).digest()
base64_signature = base64.b64encode(signature).decode()

print(base64_signature)

hashlib,hmac,base64この3つのライブラリをimportして使います

実行するとprint()には「KEmHEG1L9Y/2kRXNf/zIMfwf4NKIXX70qqjjIgCx3qc=」が表示されます。Base64エンコードを行わない場合下記のように1行で記述できます。

import hashlib
import hmac

secretKey = 'mjeld1234'
message = '文字列'

signature = hmac.new(key=bytes(secretKey,'utf-8'), msg=bytes(message,'utf-8'), digestmod=hashlib.sha256).hexdigest()
print(signature)

digest()部分をhexdigest()に変えていま。hexdigest()は「string of hexadecimal」ということらしいです

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED