常見 HASH 算法:
HASH 算法主要應用:
1)文件校驗
我們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這2種校驗並沒有抗數據篡改的能力,它們壹定程度上能檢測並糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。
MD5 Hash算法的"數字指紋"特性,使它成為目前應用最廣泛的壹種文件完整性校驗和(Checksum)算法,不少Unix系統有提供計算md5 checksum的命令。
2)數字簽名
Hash 算法也是現代密碼體系中的壹個重要組成部分。由於非對稱算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了壹個重要的角色。對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。
3)鑒權協議
如下的鑒權協議又被稱作"挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是壹種簡單而安全的方法。
數字簽名簽署和驗證數據的步驟如圖所示:
PKCS1 和 PKCS7 標準格式的簽名:
1. PKCS1簽名:即裸簽名,簽名值中只有簽名信息。
2. PKCS7簽名:簽名中可以帶有其他的附加信息,例如簽名證書信息、簽名原文信息、時間戳信息等。
PKCS7 的 attached 和 detached 方式的數字簽名:
1. attached 方式是將簽名內容和原文放在壹起,按 PKCS7 的格式打包。PKCS7的結構中有壹段可以放明文,但明文必需進行ASN.1編碼。在進行數字簽名驗證的同時,提取明文。這裏的明文實際上是真正內容的摘要。
2. detached 方式打包的 PKCS7格式包中不包含明文信息。因此在驗證的時候,還需要傳遞明文才能驗證成功。同理,這裏的明文實際上是真正內容的摘要。