在開發過程當中,經常用到各類加密方法和算法,本文總結了幾種經常使用加密方法的原理。算法
原理:加密和解密數據使用同一個密鑰,適合對大量數據進行加解密安全
安全性:關鍵是密鑰的保存方式,加密或是解密的任何一方泄漏密鑰,都會致使信息泄漏函數
表明算法:DES、3DES、Blowfish、IDEA、RC四、RC五、RC六、AES等區塊鏈
對稱密碼經常使用的數學運算:加密
**移位和循環移位 **md5
移位就是將一段數碼按照規定的位數總體性地左移或右移。循環右移就是當右移時,把數碼的最後的位移到數碼的最前頭,循環左移正相反。例如,對十進制數碼12345678循環右移1位(十進制位)的結果爲81234567,而循環左移1位的結果則爲23456781。開發
**置換 **博客
就是將數碼中的某一位的值根據置換表的規定,用另外一位代替。它不像移位操做那樣整齊有序,看上去雜亂無章。這正是加密所需,被常常應用。數學
**擴展 **it
就是將一段數碼擴展成比原來位數更長的數碼。擴展方法有多種,例如,能夠用置換的方法,以擴展置換表來規定擴展後的數碼每一位的替代值。
**壓縮 **
就是將一段數碼壓縮成比原來位數更短的數碼。壓縮方法有多種,例如,也能夠用置換的方法,以表來規定壓縮後的數碼每一位的替代值。
**異或 **
這是一種二進制布爾代數運算。異或的數學符號爲⊕ ,它的運算法則以下:
1⊕1 = 0 0⊕0 = 0 1⊕0 = 1 0⊕1 = 1
也能夠簡單地理解爲,參與異或運算的兩數位如相等,則結果爲0,不等則爲1。
**迭代 **
迭代就是屢次重複相同的運算,這在密碼算法中常常使用,以使得造成的密文更加難以破解。
原理:
非對稱加密算法須要兩個密鑰:公開密鑰(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加密算法原理
DES算法實例詳解
AES對稱加密算法掃盲
DES,3DES,AES這三種對稱密鑰的區別與聯繫
數字簽名算法介紹和區別
HOTP和TOTP算法圖解
本文內容來源於Robin Liu的博客
整理:區塊鏈兄弟