
數位電影包包含以下格式的校驗和,如下所述這裡:
$ openssl sha1 -binary 'dcpfile.xml' |openssl base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=
我怎麼才能取一個值,例如IxcfhXNHlw+1bbDFu0kp8KRylpU=
並導出原始的 sha1 哈希值,它看起來像
$ openssl sha1 'dcpfile.xml'
SHA1(dcpfile.xml)= 23171f857347970fb56db0c5bb4929f0a4729695
我的用例是,沒有很多校驗和驗證工具可以輕鬆地允許您驗證使用這些二進位/base64 值的 md5sum 類型校驗和清單,但有很多工具可以驗證 sha1,所以如果我知道的話那就太好了如何反轉這些值,以便我可以編寫一個腳本來產生更具互通性的雜湊列表。
答案1
兩個值都是相同的哈希值– 以兩種不同的編碼(表示)顯示相同的「二進位」位元組,兩者都不比另一個更「原始」。
(Base64 每個字元有 6 位元;十六進位又稱 base-16 每個數字有 4 位元。三個原始位元組、四個 Base64 數字、六個十六進位數字可以直接轉換。)
幾乎每種程式語言都具有對這些格式進行編碼/解碼的功能。例如,在 shell 工具中:
若要將 Base64 解碼為原始二進位數據,請使用
base64 -d
或openssl base64 -d
。若要將原始二進位資料編碼為十六進位,請使用
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..|