web-dev-qa-db-ja.com

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
Tandy Freeman

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

(Base64は1文字あたり6ビットです。16進数の別名base-16は1桁あたり4ビットです。3つのrawバイト、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..|
1
user1686