こんにちは!
今回は「GASでHMAC SHA 256を使って、文字列をキーでハッシュ化する方法」についてお伝えしたいと思います。
GASから外部サービスのAPIを叩くときに、HMAC SHA 256を使ったので、方法を共有します。
GASにおけるHMAC SHA 256の書き方
まず、GASにおけるHMAC SHA 256の関数は以下になります。
HMAC SHA 256
Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, value, key)
このままだと返却値が配列になってしまい使いづらいので、変形します。
以下は実際のHMAC SHA 256を使ったハッシュ値取得の書き方になります。
// HMAC SHA 256ハッシュ化
const convertToHMmacSHA256 = (text, SECRET_KEY) => {
const rowHash = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, text, SECRET_KEY);
let txtHash = '';
for (i = 0; i < rowHash.length; i++) {
let hashVal = rowHash[i];
if (hashVal < 0) {
hashVal += 256;
}
if (hashVal.toString(16).length == 1) {
txtHash += '0';
}
txtHash += hashVal.toString(16);
}
return txtHash;
};
// 関数呼び出し
const value = 'timeStamp body={id: 1}';
const key = 'abc123';
convertToHMmacSHA256('text', value);
これでHMAC SHA 256を使って、文字列をキーでハッシュ化することができました!
MD5などのハッシュアルゴリズムも可能
GASでHMAC MD5など、別のアルゴリズムを使いたい場合は上記のパラメータを修正するだけで可能です。
HMAC_MD5
Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_MD5, value, key)
HMAC_SHA_1
Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_1, value, key)
HMAC_SHA_384
Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_384, value, key)
HMAC_SHA_512
Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, value, key)
参考
https://developers.google.com/apps-script/reference/utilities/mac-algorithm
以上、お疲れさまでした〜🍵