從 openssl 二進位 Base64 值導出 sha1 雜湊值

從 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

兩個值都是相同的哈希值– 以兩種不同的編碼(表示)顯示相同的「二進位」位元組,兩者都不比另一個更「原始」。

(Base64 每個字元有 6 位元;十六進位又稱 base-16 每個數字有 4 位元。三個原始位元組、四個 Base64 數字、六個十六進位數字可以直接轉換。)

幾乎每種程式語言都具有對這些格式進行編碼/解碼的功能。例如,在 shell 工具中:

  • 若要將 Base64 解碼為原始二進位數據,請使用base64 -dopenssl base64 -d

  • 若要將原始二進位資料編碼為十六進位,請使用xxd -phexdump

$ 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..|

相關內容