
デジタルシネマパッケージには、次の形式のチェックサムが含まれています。ここ:
$ 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..|