opensslバイナリbase64値からsha1ハッシュを導出する

opensslバイナリbase64値からsha1ハッシュを導出する

デジタルシネマパッケージには、次の形式のチェックサムが含まれています。ここ:

$ openssl sha1  -binary 'dcpfile.xml' |openssl base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=

次のような値を取得しIxcfhXNHlw+1bbDFu0kp8KRylpU=て、元のsha1ハッシュを導き出すにはどうすればよいでしょうか。

$ openssl sha1 'dcpfile.xml' 
SHA1(dcpfile.xml)= 23171f857347970fb56db0c5bb4929f0a4729695

私のユースケースでは、これらのバイナリ/base64 値を使用する md5sum タイプのチェックサム マニフェストを簡単に検証できるチェックサム検証ツールはあまりありませんが、sha1 を検証するツールはたくさんあるので、これらの値を逆にする方法がわかっていれば、より相互運用可能なハッシュ リストを生成するスクリプトを作成できると便利です。

答え1

どちらの値も同じハッシュ– 同じ「バイナリ」バイトが 2 つの異なるエンコード (表現) で表示され、どちらも他方よりも「オリジナル」ではありません。

(Base64 では 1 文字あたり 6 ビット、16 進数 (base-16) では 1 桁あたり 4 ビットです。3 つの生のバイト、4 つの Base64 桁、6 つの 16 進桁は直接変換可能です。)

ほぼすべてのプログラミング言語には、これらの形式をエンコード/デコードする関数があります。たとえば、シェル ツールでは次のようになります。

  • Base64 を生のバイナリ データにデコードするには、base64 -dまたは を使用しますopenssl base64 -d

  • 生のバイナリ データを 16 進数にエンコードするには、xxd -pまたは を使用しますhexdump

$ echo 23171f857347970fb56db0c5bb4929f0a4729695 | xxd -r -p | base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=

$ echo IxcfhXNHlw+1bbDFu0kp8KRylpU= | base64 -d | hd
00000000  23 17 1f 85 73 47 97 0f  b5 6d b0 c5 bb 49 29 f0  |#...sG...m...I).|
00000010  a4 72 96 95                                       |.r..|

関連情報