摘要:在開發過程中,常常用到各種加密方法和算法,本文總結了幾種常用加密方法的原理。非對稱加密原理非對稱加密算法需要兩個密鑰公開密鑰和私有密鑰。
在開發過程中,常常用到各種加密方法和算法,本文總結了幾種常用加密方法的原理。
加密和解密數據使用同一個密鑰,適合對大量數據進行加解密
安全性:關鍵是密鑰的保存方式,加密或是解密的任何一方泄漏密鑰,都會導致信息泄漏
代表算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、AES等
對稱密碼常用的數學運算:移位和循環移位
移位就是將一段數碼按照規定的位數整體性地左移或右移。循環右移就是當右移時,把數碼的最后的位移到數碼的最前頭,循環左移正相反。例如,對十進制數碼12345678循環右移1位(十進制位)的結果為81234567,而循環左移1位的結果則為23456781。
置換
就是將數碼中的某一位的值根據置換表的規定,用另一位代替。它不像移位操作那樣整齊有序,看上去雜亂無章。這正是加密所需,被經常應用。
擴展
就是將一段數碼擴展成比原來位數更長的數碼。擴展方法有多種,例如,可以用置換的方法,以擴展置換表來規定擴展后的數碼每一位的替代值。
壓縮
就是將一段數碼壓縮成比原來位數更短的數碼。壓縮方法有多種,例如,也可以用置換的方法,以表來規定壓縮后的數碼每一位的替代值。
異或
這是一種二進制布爾代數運算。異或的數學符號為⊕ ,它的運算法則如下:
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、RC4、RC5、RC6、AES等
采用某種散列函數,輸入不同長度的明文,得到相同的長度的密文,明文的微小變化都能引起密文的巨大變化。其實哈希散列算法不算是真正的加密,而是生成對應明文的指紋信息,用來校驗數據的完整性。
安全性:不能通過密文反推明文,通常作為數據的完整性校驗
應用場景1:生成信息摘要,驗證信息的完整性
應用場景2:不用明文存儲用戶密碼,比如使用md5(md5(用戶密碼)+salt)來存儲密碼和驗證密碼,防止攻擊者用彩虹表攻擊
代表算法:MD2、MD4、MD5、PANAMA、SHA-0、SHA-1、SHA-256、SHA-512等
常用算法對比名稱 | 密鑰長度 | 運算速度 | 安全性 | 資源消耗 | 加密類型 |
---|---|---|---|---|---|
DES | 56位 | 較快 | 低 | 中 | 對稱 |
3DES | 168位 | 慢 | 中 | 高 | 對稱 |
IDEA | 128位 | 較慢 | 中 | 高 | 對稱 |
AES | 128、192、256位 | 快 | 高 | 低 | 對稱 |
RSA | 1024、2048、3072、4096 | 慢 | 高 | 高 | 非對稱 |
DSA | 1024、2048、3072、4096 | 慢 | 高 | 低 | 非對稱 |
ECC | 256 | 快 | 高 | 低 | 非對稱 |
SHA-1 | 慢 | 高 | 低 | 散列 | |
MD5 | 快 | 中 | 低 | 散列 |
DES加密算法原理
DES算法實例詳解
AES對稱加密算法掃盲
DES,3DES,AES這三種對稱密鑰的區別與聯系
數字簽名算法介紹和區別
HOTP和TOTP算法圖解
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11379.html
摘要:當年玩耍前言是開發中最常用的工具之一,通常大家會使用去調用遠程,使用其中比較基礎的,長期開發爬蟲,會接觸不常用的,同時會遇到各式各樣的坑,下面會總結這些年遇到的坑坑坑坑一解決過程開發某省份移動爬蟲時,加載首頁會報標題錯誤,嘗試各種辦法都不好 當年玩耍httpclient 前言 httpclient是java開發中最常用的工具之一,通常大家會使用httpcilent去調用遠程,使用其中比...
摘要:時間年月日星期一說明本文部分內容均來自慕課網。多用于網絡加密。散列函數函數或消息摘要函數主要作用散列函數用來驗證數據的完整性。 時間:2017年4月10日星期一說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼:https://github.com/zccodere...
摘要:系列密碼學二傳送門密碼學一基礎密碼學算法分類消息編碼消息摘要類,類,對稱密碼非對稱密碼數字簽名五元組明文原始信息。非對稱密碼包提供給,,等非對稱加密算法。對稱加密算法在分布式網絡系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。 前言 最近一場面試,面試官問了我 對稱加密與非對稱加密的問題,雖然曾經看過一些內容,但是沒有系統的整理,所以當被問的時候,腦子里一片空白,沒有回答上...
閱讀 1712·2023-04-26 02:30
閱讀 1040·2021-11-10 11:36
閱讀 1386·2021-10-08 10:14
閱讀 3514·2021-09-28 09:35
閱讀 1556·2021-08-23 09:47
閱讀 2549·2019-08-30 15:56
閱讀 1475·2019-08-30 15:44
閱讀 1769·2019-08-30 13:59