諸般の事情でcmd.exeしか使えない(power shellも不可)。この状況でハッシュ値(sha256 base64形式)を計算する方法
遠回りでしかないが、、そんな状況もあるということで。。
# certutilを使ってSHA256を生成 # 生成されるのは、SHA256をHEXダンプした形式(base64ではなくHEXダンプ) $ certutil -hashfile test.txt SHA256 > test_hash.txt # file: test_hash.txt # SHA256 ハッシュ (対象 test.txt): # 259f34df2acdfdbe23fb8963e8f6e62dcefdb0cabe627d42064246118bb00e1f # CertUtil: -hashfile コマンドは正常に完了しました。 # #test_hash.txt には前後余計な説明があるのでこれを取り除く # # file: test_hash_stip.txt # 259f34df2acdfdbe23fb8963e8f6e62dcefdb0cabe627d42064246118bb00e1f # # 上記はbase64形式ではなくHEXダンプ。。要求仕様に合わない # base64形式にするため、HEXダンプ形式をバイナリに戻す $ certutil -decodehex test_hash_strip.txt test_hash.bin # certutil encodeを使ってバイナリ形式(のハッシュ値)をBASE64形式に変換 $ certutil -encode test_hash.bin test_hash.txt # file: test_hash.txt # -----BEGIN CERTIFICATE----- # JZ803yrN/b4j+4lj6PbmLc79sMq+Yn1CBkJGEYuwDh8= # -----END CERTIFICATE----- # test_hash.txtには余計な説明があるのでこれを取り除く # file: test_hash.txt # JZ803yrN/b4j+4lj6PbmLc79sMq+Yn1CBkJGEYuwDh8= # base64形式のハッシュ値ができる
opensshが使えたら以下
$ openssl dgst -sha256 -binary test.txt | openssl enc -base64 JZ803yrN/b4j+4lj6PbmLc79sMq+Yn1CBkJGEYuwDh8=
cmd.exe環境のcertutilコマンドをこねくりまわしたbase64形式のSHA256ハッシュ値と、linux/WSL環境で作ったハッシュ値は一致する