經常使用加密算法探尋

在開發過程當中,經常用到各類加密方法和算法,本文總結了幾種經常使用加密方法的原理。html


對稱加密

圖片描述

原理:

加密和解密數據使用同一個密鑰,適合對大量數據進行加解密算法

安全性:

關鍵是密鑰的保存方式,加密或是解密的任何一方泄漏密鑰,都會致使信息泄漏安全

表明算法:

DES、3DES、Blowfish、IDEA、RC四、RC五、RC六、AES等函數

對稱密碼經常使用的數學運算:

  • 移位和循環移位

  移位就是將一段數碼按照規定的位數總體性地左移或右移。循環右移就是當右移時,把數碼的最後的位移到數碼的最前頭,循環左移正相反。例如,對十進制數碼12345678循環右移1位(十進制位)的結果爲81234567,而循環左移1位的結果則爲23456781。ui

  • 置換

  就是將數碼中的某一位的值根據置換表的規定,用另外一位代替。它不像移位操做那樣整齊有序,看上去雜亂無章。這正是加密所需,被常常應用。加密

  • 擴展

  就是將一段數碼擴展成比原來位數更長的數碼。擴展方法有多種,例如,能夠用置換的方法,以擴展置換表來規定擴展後的數碼每一位的替代值。spa

  • 壓縮

  就是將一段數碼壓縮成比原來位數更短的數碼。壓縮方法有多種,例如,也能夠用置換的方法,以表來規定壓縮後的數碼每一位的替代值。.net

  • 異或

  這是一種二進制布爾代數運算。異或的數學符號爲⊕ ,它的運算法則以下:
1⊕1 = 0
0⊕0 = 0
1⊕0 = 1
0⊕1 = 1
  也能夠簡單地理解爲,參與異或運算的兩數位如相等,則結果爲0,不等則爲1。htm

  • 迭代

  迭代就是屢次重複相同的運算,這在密碼算法中常常使用,以使得造成的密文更加難以破解。blog


非對稱加密

圖片描述

原理:

非對稱加密算法須要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,若是用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;若是用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密

安全性:

公鑰能夠被任何人知道,可是私鑰被泄漏就會致使信息泄漏

應用場景:

數字簽名,私鑰擁有者對信息進行加密,接受者使用公鑰解密成功,就能夠肯定發送者的身份

密鑰長度:

一般是1024,2048等。密鑰長度增加一倍,公鑰操做所需時間增長約4倍,私鑰操做所需時間增長約8倍,公私鑰生成時間約增加16倍

加密的明文長度:

加密的明文長度不能超過RSA密鑰的長度減去11byte,好比密鑰長度是1024位的,1024位=1024bit=128byte,128-11=117byte,因此明文長度不能超過117byte,若是長度超過該值將會拋出異常。加密後密文的長度爲密鑰的長度,如密鑰長度爲1024bit(128Byte),最後生成的密文固定爲 1024bit(128Byte)

表明算法:

DES、3DES、Blowfish、IDEA、RC四、RC五、RC六、AES等


哈希散列算法

圖片描述

原理:

採用某種散列函數,輸入不一樣長度的明文,獲得相同的長度的密文,明文的微小變化都能引發密文的巨大變化。其實哈希散列算法不算是真正的加密,而是生成對應明文的指紋信息,用來校驗數據的完整性。

安全性:

不能經過密文反推明文,一般做爲數據的完整性校驗

應用場景1:

生成信息摘要,驗證信息的完整性

應用場景2:

不用明文存儲用戶密碼,好比使用md5(md5(用戶密碼)+salt)來存儲密碼和驗證密碼,防止攻擊者用彩虹表攻擊

表明算法:

MD二、MD四、MD五、PANAMA、SHA-0、SHA-一、SHA-25六、SHA-512等

經常使用算法對比

名稱 密鑰長度 運算速度 安全性 資源消耗 加密類型
DES 56位 較快 對稱
3DES 168位 對稱
IDEA 128位 較慢 對稱
AES 12八、19二、256位 對稱
RSA 102四、204八、307二、4096 非對稱
DSA 102四、204八、307二、4096 非對稱
ECC 256 非對稱
SHA-1 散列
MD5 散列

參考:

相關文章
相關標籤/搜索