
Digital Cinema Packages enthalten Prüfsummen im folgenden Format wie beschriebenHier:
$ openssl sha1 -binary 'dcpfile.xml' |openssl base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=
Wie kann ich einen Wert wie nehmen IxcfhXNHlw+1bbDFu0kp8KRylpU=
und den ursprünglichen SHA1-Hash ableiten, der ungefähr so aussehen würde
$ openssl sha1 'dcpfile.xml'
SHA1(dcpfile.xml)= 23171f857347970fb56db0c5bb4929f0a4729695
Mein Anwendungsfall besteht darin, dass es nicht viele Prüfsummenvalidierungstools gibt, mit denen man problemlos ein Prüfsummenmanifest vom Typ MD5SUM validieren kann, das diese Binär-/Base64-Werte verwendet. Es gibt jedoch viele Tools, die SHA1 validieren. Daher wäre es großartig, wenn ich wüsste, wie man diese Werte umkehrt, damit ich ein Skript schreiben könnte, das eine besser interoperable Liste von Hashes generiert.
Antwort1
Beide Werte sindder gleiche Hash– dieselben „binären“ Bytes, die in zwei verschiedenen Kodierungen (Darstellungen) angezeigt werden, und keine ist „origineller“ als die andere.
(Base64 hat 6 Bits pro Zeichen; Hexadezimal, auch bekannt als Base-16, hat 4 Bits pro Ziffer. Drei Rohbytes, vier Base64-Ziffern, sechs Hex-Ziffern sind direkt konvertierbar.)
Fast jede Programmiersprache verfügt über Funktionen zum Kodieren/Dekodieren dieser Formate. Beispielsweise in Shell-Tools:
Um Base64 in Rohbinärdaten zu dekodieren, verwenden Sie
base64 -d
oderopenssl base64 -d
.Um Rohbinärdaten in Hexadezimalzahlen umzuwandeln, verwenden Sie
xxd -p
oderhexdump
.
$ 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..|