摘要:在開(kāi)發(fā)過(guò)程中,常常用到各種加密方法和算法,本文總結(jié)了幾種常用加密方法的原理。非對(duì)稱加密原理非對(duì)稱加密算法需要兩個(gè)密鑰公開(kāi)密鑰和私有密鑰。
在開(kāi)發(fā)過(guò)程中,常常用到各種加密方法和算法,本文總結(jié)了幾種常用加密方法的原理。
加密和解密數(shù)據(jù)使用同一個(gè)密鑰,適合對(duì)大量數(shù)據(jù)進(jìn)行加解密
安全性:關(guān)鍵是密鑰的保存方式,加密或是解密的任何一方泄漏密鑰,都會(huì)導(dǎo)致信息泄漏
代表算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、AES等
對(duì)稱密碼常用的數(shù)學(xué)運(yùn)算:移位和循環(huán)移位
移位就是將一段數(shù)碼按照規(guī)定的位數(shù)整體性地左移或右移。循環(huán)右移就是當(dāng)右移時(shí),把數(shù)碼的最后的位移到數(shù)碼的最前頭,循環(huán)左移正相反。例如,對(duì)十進(jìn)制數(shù)碼12345678循環(huán)右移1位(十進(jìn)制位)的結(jié)果為81234567,而循環(huán)左移1位的結(jié)果則為23456781。
置換
就是將數(shù)碼中的某一位的值根據(jù)置換表的規(guī)定,用另一位代替。它不像移位操作那樣整齊有序,看上去雜亂無(wú)章。這正是加密所需,被經(jīng)常應(yīng)用。
擴(kuò)展
就是將一段數(shù)碼擴(kuò)展成比原來(lái)位數(shù)更長(zhǎng)的數(shù)碼。擴(kuò)展方法有多種,例如,可以用置換的方法,以擴(kuò)展置換表來(lái)規(guī)定擴(kuò)展后的數(shù)碼每一位的替代值。
壓縮
就是將一段數(shù)碼壓縮成比原來(lái)位數(shù)更短的數(shù)碼。壓縮方法有多種,例如,也可以用置換的方法,以表來(lái)規(guī)定壓縮后的數(shù)碼每一位的替代值。
異或
這是一種二進(jìn)制布爾代數(shù)運(yùn)算。異或的數(shù)學(xué)符號(hào)為⊕ ,它的運(yùn)算法則如下:
1⊕1 = 0
0⊕0 = 0
1⊕0 = 1
0⊕1 = 1
也可以簡(jiǎn)單地理解為,參與異或運(yùn)算的兩數(shù)位如相等,則結(jié)果為0,不等則為1。迭代
迭代就是多次重復(fù)相同的運(yùn)算,這在密碼算法中經(jīng)常使用,以使得形成的密文更加難以破解。
非對(duì)稱加密算法需要兩個(gè)密鑰:公開(kāi)密鑰(publickey)和私有密鑰(privatekey)。公開(kāi)密鑰與私有密鑰是一對(duì),如果用公開(kāi)密鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私有密鑰才能解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公開(kāi)密鑰才能解密
安全性:公鑰可以被任何人知道,但是私鑰被泄漏就會(huì)導(dǎo)致信息泄漏
應(yīng)用場(chǎng)景:數(shù)字簽名,私鑰擁有者對(duì)信息進(jìn)行加密,接受者使用公鑰解密成功,就可以確定發(fā)送者的身份
密鑰長(zhǎng)度:通常是1024,2048等。密鑰長(zhǎng)度增長(zhǎng)一倍,公鑰操作所需時(shí)間增加約4倍,私鑰操作所需時(shí)間增加約8倍,公私鑰生成時(shí)間約增長(zhǎng)16倍
加密的明文長(zhǎng)度:加密的明文長(zhǎng)度不能超過(guò)RSA密鑰的長(zhǎng)度減去11byte,比如密鑰長(zhǎng)度是1024位的,1024位=1024bit=128byte,128-11=117byte,所以明文長(zhǎng)度不能超過(guò)117byte,如果長(zhǎng)度超過(guò)該值將會(huì)拋出異常。加密后密文的長(zhǎng)度為密鑰的長(zhǎng)度,如密鑰長(zhǎng)度為1024bit(128Byte),最后生成的密文固定為 1024bit(128Byte)
代表算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、AES等
采用某種散列函數(shù),輸入不同長(zhǎng)度的明文,得到相同的長(zhǎng)度的密文,明文的微小變化都能引起密文的巨大變化。其實(shí)哈希散列算法不算是真正的加密,而是生成對(duì)應(yīng)明文的指紋信息,用來(lái)校驗(yàn)數(shù)據(jù)的完整性。
安全性:不能通過(guò)密文反推明文,通常作為數(shù)據(jù)的完整性校驗(yàn)
應(yīng)用場(chǎng)景1:生成信息摘要,驗(yàn)證信息的完整性
應(yīng)用場(chǎng)景2:不用明文存儲(chǔ)用戶密碼,比如使用md5(md5(用戶密碼)+salt)來(lái)存儲(chǔ)密碼和驗(yàn)證密碼,防止攻擊者用彩虹表攻擊
代表算法:MD2、MD4、MD5、PANAMA、SHA-0、SHA-1、SHA-256、SHA-512等
常用算法對(duì)比名稱 | 密鑰長(zhǎng)度 | 運(yùn)算速度 | 安全性 | 資源消耗 | 加密類型 |
---|---|---|---|---|---|
DES | 56位 | 較快 | 低 | 中 | 對(duì)稱 |
3DES | 168位 | 慢 | 中 | 高 | 對(duì)稱 |
IDEA | 128位 | 較慢 | 中 | 高 | 對(duì)稱 |
AES | 128、192、256位 | 快 | 高 | 低 | 對(duì)稱 |
RSA | 1024、2048、3072、4096 | 慢 | 高 | 高 | 非對(duì)稱 |
DSA | 1024、2048、3072、4096 | 慢 | 高 | 低 | 非對(duì)稱 |
ECC | 256 | 快 | 高 | 低 | 非對(duì)稱 |
SHA-1 | 慢 | 高 | 低 | 散列 | |
MD5 | 快 | 中 | 低 | 散列 |
DES加密算法原理
DES算法實(shí)例詳解
AES對(duì)稱加密算法掃盲
DES,3DES,AES這三種對(duì)稱密鑰的區(qū)別與聯(lián)系
數(shù)字簽名算法介紹和區(qū)別
HOTP和TOTP算法圖解
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11379.html
摘要:當(dāng)年玩耍前言是開(kāi)發(fā)中最常用的工具之一,通常大家會(huì)使用去調(diào)用遠(yuǎn)程,使用其中比較基礎(chǔ)的,長(zhǎng)期開(kāi)發(fā)爬蟲(chóng),會(huì)接觸不常用的,同時(shí)會(huì)遇到各式各樣的坑,下面會(huì)總結(jié)這些年遇到的坑坑坑坑一解決過(guò)程開(kāi)發(fā)某省份移動(dòng)爬蟲(chóng)時(shí),加載首頁(yè)會(huì)報(bào)標(biāo)題錯(cuò)誤,嘗試各種辦法都不好 當(dāng)年玩耍httpclient 前言 httpclient是java開(kāi)發(fā)中最常用的工具之一,通常大家會(huì)使用httpcilent去調(diào)用遠(yuǎn)程,使用其中比...
摘要:方法計(jì)算出的值,然后去尋找方法如果需要的存放的存儲(chǔ)空間大于默認(rèn)數(shù)組大小負(fù)載因子的乘積,那么就發(fā)生擴(kuò)容,擴(kuò)大為原來(lái)的兩倍問(wèn)題為什么的容量總是的次方因?yàn)橹杏幸粋€(gè)方法是這樣可以減少碰撞概率。例子與不會(huì)發(fā)生碰撞會(huì)發(fā)生碰撞,這是一會(huì)我數(shù)學(xué)概率問(wèn)題。 Hashmap源碼 1、 構(gòu)造器: a)獲得默認(rèn)數(shù)組大?。?>>4 :16 b) 獲得負(fù)載因子:0.75:衡量hashmap的空間使用程度...
摘要:時(shí)間年月日星期一說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。多用于網(wǎng)絡(luò)加密。散列函數(shù)函數(shù)或消息摘要函數(shù)主要作用散列函數(shù)用來(lái)驗(yàn)證數(shù)據(jù)的完整性。 時(shí)間:2017年4月10日星期一說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個(gè)人學(xué)習(xí)源碼:https://github.com/zccodere...
摘要:系列密碼學(xué)二傳送門密碼學(xué)一基礎(chǔ)密碼學(xué)算法分類消息編碼消息摘要類,類,對(duì)稱密碼非對(duì)稱密碼數(shù)字簽名五元組明文原始信息。非對(duì)稱密碼包提供給,,等非對(duì)稱加密算法。對(duì)稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因?yàn)槊荑€管理困難,使用成本較高。 前言 最近一場(chǎng)面試,面試官問(wèn)了我 對(duì)稱加密與非對(duì)稱加密的問(wèn)題,雖然曾經(jīng)看過(guò)一些內(nèi)容,但是沒(méi)有系統(tǒng)的整理,所以當(dāng)被問(wèn)的時(shí)候,腦子里一片空白,沒(méi)有回答上...
閱讀 1724·2023-04-26 02:30
閱讀 1057·2021-11-10 11:36
閱讀 1397·2021-10-08 10:14
閱讀 3525·2021-09-28 09:35
閱讀 1565·2021-08-23 09:47
閱讀 2561·2019-08-30 15:56
閱讀 1487·2019-08-30 15:44
閱讀 1778·2019-08-30 13:59