Leiten Sie den SHA1-Hash aus dem binären OpenSSL-Base64-Wert ab

Leiten Sie den SHA1-Hash aus dem binären OpenSSL-Base64-Wert ab

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 -doder openssl base64 -d.

  • Um Rohbinärdaten in Hexadezimalzahlen umzuwandeln, verwenden Sie xxd -poder 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..|

verwandte Informationen