軟件測試 | 計算散列值
問題
如果你的應用程序對數據使用散列值、檢驗和或者其他完整性檢查,那么你將需要辨認它們,而且還可能需要對測試數據計算這些值。如果你不熟悉散列值,請看稍后的補充材料“什么是散列值?”。
解決方案
于其他編碼任務一樣,你至少有3項很好的選擇:OpenSSL,CAL9000和Perl。
MD5
SHA1

討論
MD5的情況是通過在Unix或Windows上使用OpenSSL來進行演示的。OpenSSL還有對等的sha1命令。注意,在Unix上echo命令需要-n以禁止在數據末尾追加換行字符。盡管Windows也有echo命令,但你不能以同樣的方法使用它,因為沒有辦法來禁止你所給信息末尾的回車/換行字符對。
SHA-1的情況是以Perl腳本進行演示的,用到了Digest::SHA1模塊。Perl有對等的Digest::MD5模塊,以同樣的方式用于MD5散列值。
注意,沒有八法能解碼散列值。散列值是單向的數學摘要。無論輸入有多少數據,散列值都會生成長度完全相等的輸出。
MD5散列值
MD5散列值生成這稿128位(16字節(jié))的數據。你可能會看到它有幾種不同的表示方式:
32個十六進制字符
24哥Base-64字符
PlnPFeQx5Jj+uwRfh//RSw==。如果它們接收MD5的二進制輸出(128個原始的二進制位),然后進行Base-64編碼,那么你就是看到這種表示方式。
SHA-1散列值
SHA-1是一種散列值,它總是生成正好160位(20字節(jié))的數據。與MD5一樣,你可能會看到它被表示為以下幾種方式:

標簽: