2
1

GASのSHA256を16進数の文字列に変換したいときのコードスニペット

Posted at

目的のコード

指定された鍵で HMAC-SHA256 を使用して指定された値に署名し、16進数の文字列にして返す

function toSha256(key: string, value: string): string {
	const signatureBytes = Utilities.computeHmacSha256Signature(value, key);
	const signature = signatureBytes
		.map((byte) => (byte < 0 ? 256 + byte : byte))
		.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), "");
	return signature;
}

keyに鍵を、valueに目的の値をいれる。戻り値が16進数の文字列だ。

解説

  • 下記のユーティリティ関数のwrapperである。

  • GASのバイト列は、符号付き整数になっているのがNode.jsのByteとは異なるので、単純な流用ができなかった。
  • あんまり低レイヤー詳しくないが、負数に256を足して、それぞれ16進数に変換したら目的のものが得られたので良しとした。

先行記事があります

こちらが先行記事でして、私の貢献は、この機能をモジュール化して切り出したこと。

何に使用したのか

  • 個人的に、とあるprivate APIにアクセスする際に必要となった。

ちょっとしたNode.jsのサーバーほしいな、ってとき、GASも選択肢

  • GASはHTTPクライアント/サーバーになれる
  • GASは定期実行できる
  • GASは永続化層をスプレッドシートにすればいいので、状態も持てる
  • ただGASはNode.jsみたいにライブラリがないのが弱点なので、今回紹介したようなユーティリティがないと辛い
  • 僕は暇なときこのへん進めてくので、Universalな機能で困ったら相談してください

関連記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1