Open2
コマンドラインでSHA256のhex文字列をBase64エンコードする
今までパスワード生成の際にはSHA256/Base64変換のWebサービスを利用していたのですが、機密情報をWebサービスに預けるのは結構不安なので、ローカルのコマンドラインで変換する方法を模索してみました。
こちら(https://stackoverflow.com/questions/71042721/how-to-base64-encode-a-sha256-hex-character-string) の説明を参考に
printf yourstring | sha256sum | cut -d ' ' -f 1 | xxd -r -p | base64
上記のコマンドが問題なく動作することは分かりましたので、とりあえずメモを残します。
- まずは
printf yourstring
で文字列を出力 (echo -n 'yourstring'
でもいいかも) - 次に
sha256sum
で文字列をSHA256ハッシュに変換します(どうやらsha256sum
コマンドは環境依存のようで、一部環境ではshasum
を使う必要があるそうです) -
cut -d ' ' -f 1
で最後尾の-
を消します。実際にコマンド出力を見てみるとこんな感じ。
$ printf teststring | sha256sum
3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d111 -
$ printf teststring | sha256sum | cut -d ' ' -f 1
3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d111
- 続けて
xxd -r -p
で出力された文字列をバイナリダンプします。xxd
コマンドは文字列(orファイル)を十六進数に(またはその逆に)ダンプするコマンドで、ここでは-r
(--revert
)引数がついてるため、先ほど出力された十六進数の文字列を二進数に変換していることがわかります。 - 最後に
base64
コマンドでBase64エンコードします。