當前位置:成語大全網 - 新華字典 - 常用的簽名算法

常用的簽名算法

寫在前面:加密和簽名是兩回事,加密的目的是防止信息泄露,簽名的目的是防止篡改和偽造

MD5、SHA-1、SHA-256、HMAC-SHA256等屬於哈希算法,計算數字摘要,不可逆,有碰撞

DES、AES、RSA等屬於加密算法,對數據進行加解密,可逆

MD5簽名通常先按照壹定規則排列待簽名數據,進行加鹽(拼key),然後使用MD5摘要算法計算摘要,得到的散列值即為sign

MD5驗簽即按照相同的規則排列待簽名數據,使用相同的key,然後使用MD5摘要算法計算摘要,對比自己得到的sign值和對方傳過來的sign值是否相等

參考資料:

MD5算法原理

MD5作為壹種散列算法,雖然很難發生散列碰撞,但是仍然存在兩種不同數據會發生碰撞

已知明文A,可以計算得到另壹個明文B和A的MD5值相同,但是並不能保證B是壹段有意義的文字

未知明文A,已知MD5值X,無法計算得到明文A

暴力枚舉、字典法、彩虹表法(對字典表的優化)

參考資料:

MD5破解方法

網上的這篇文章說的比較清楚: SHA1算法原理

SHA-1壹般被應用於數字證書的簽名哈希算法,或者RSA簽名中的哈希算法

經過權威機構證實,sha1算法的不安全性越來越高,sha指紋造假成本越來越低,隨即微軟、谷歌等IT巨頭相繼發布棄用sha1哈希算法聲明,第三方認證機構自2016年1月1日起,將全面停止簽發SHA1算法的數字證書。

網上的這篇文章說的比較清楚: SHA256算法原理

SHA-1算法和SHA-256算法並不是近親,SHA-256算法屬於SHA-2算法。SHA-1是160位的哈希值,而SHA-2是組合值,有不同的位數,SHA-256就是256位的SHA-2。SHA-1算法和MD5算法都是由MD4算法導出,所以這倆是近親。

顧名思義,慢哈希就是很慢,主要為了防止暴力破解。由於慢,通常都用在客戶端或者對性能沒什麽要求的場景

業內通用的壹般是MD5(MD5(password)+salt)或SHA256(SHA256(password)+salt)

客戶端進行SHA256(password),並傳輸給服務端,服務端進行SHA256(SHA256(password)+salt)

ps:小數據如果既要加密又要簽名,可以直接使用RSA私鑰加密整個數據,接收方公鑰解密,不做簽名

比如贈送代金券的接口,拿到壹個真實請求以後重復調用。

解決方案: