加密解密
加密分類
1)不可逆加密
不可逆,就是指不能返回,就是遠(yuǎn)信息數(shù)據(jù),通過加密后得到的密文數(shù)據(jù)庫信息,不存在算法讓密文變回來,不能變回原文信息;md5 hash散列計(jì)算為代表
2)可逆加密
可逆,就是指遠(yuǎn)信息數(shù)據(jù),通過加密算法,加密后,得到的密文數(shù)據(jù)信息,存在一種解密算法,可以讓密文解密后得到原文信息
不可逆加密
MD5加密,就是典型的加密,因?yàn)樗荒軓臄?shù)據(jù)信息通過加密后得到密文信息,而不能從密文再通過計(jì)算得到原文;
1)規(guī)則:
MD5公開算法,hash散列計(jì)算;任何語言實(shí)現(xiàn)后其實(shí)都一樣,通用的,無論是C#、java...各種語言的實(shí)現(xiàn)都一樣。本質(zhì)是通過hash散列計(jì)算,可以對(duì)普通的數(shù)據(jù)信息進(jìn)行加密,也可以對(duì)文件生成文件的摘要。
相同原數(shù)據(jù)信息加密的結(jié)果是一樣
不同長(zhǎng)度的內(nèi)容加密后結(jié)果都是32位
原文差別很小,結(jié)果差別很大
不管文件多大,都能產(chǎn)生32位長(zhǎng)度摘要
文件內(nèi)容 有一點(diǎn)改動(dòng),結(jié)果變化非常大
文件內(nèi)容不變,名字變了,結(jié)果是不變
3)作用
a)防篡改
發(fā)個(gè)文檔,事先給別人一個(gè)md5,是文檔的摘要,源代碼管理器svn--即使電腦斷網(wǎng)了,文件有任何改動(dòng)都能被發(fā)現(xiàn)--本地存了一個(gè)文件的md5--文件有更新,就再對(duì)比一下md5,極速妙傳--掃描文件的md5--跟已有的文件md5對(duì)比--吻合表示文件已存在不用再上傳
b)密碼保護(hù),防止看到明文
密碼應(yīng)該只有用戶知道---數(shù)據(jù)庫不能存明文--但是又需要驗(yàn)證,md5加密下原始密碼---數(shù)據(jù)庫存密文---下次登陸把密碼md5后再對(duì)比,密文是可見的,所以要求密碼不能太簡(jiǎn)單
c)防止抵賴
防止抵賴,數(shù)字簽名,把一些內(nèi)容摘要一下,由權(quán)威第三方去保障,將來這個(gè)文件就是你做的,不能抵賴
3)MD5的爭(zhēng)議
實(shí)質(zhì)上,MD5知識(shí)一種哈希算法。哈希算法,又叫散列算法,是一類把任意數(shù)據(jù)轉(zhuǎn)換成定長(zhǎng)(或限制長(zhǎng)度)數(shù)據(jù)的算法統(tǒng)稱??梢园褦?shù)據(jù)計(jì)算后得到一個(gè)hash散列值,不能計(jì)算得到數(shù)據(jù)。
部分人認(rèn)為md5不是加密算法,他們認(rèn)為加密就要對(duì)應(yīng)一個(gè)解密,可以把原文加密成密文,也能從密文解密到原文,這才是加密。也有部分人認(rèn)為這是個(gè)不可逆加密
對(duì)稱可逆加密Des
1)規(guī)則:
對(duì)稱可逆加密,有一組加密解密算法,成套的,且算法是公開的,不同編程語言的應(yīng)用也是相同的。
有一組加密解密Key--密鑰,且密鑰是相同的,加密和解密均需要使用密鑰,因?yàn)槊荑€相同。也就是說加密和解密都需要使用同一個(gè)密鑰。知道加密解密算法,無法推導(dǎo)出密鑰的;
加密使用的密鑰,在解密的時(shí)候,也需要使用這個(gè)密鑰才能解開;
2)特點(diǎn):
原文昌--加密后--密文也長(zhǎng),原文短---加密后--密文也相對(duì)要短一些
加密解密速度超快
容易泄漏密鑰,應(yīng)為密鑰是一樣,安全性不是最高,相比于非對(duì)稱可逆加密而言;
3)作用:
互聯(lián)網(wǎng)傳輸加密數(shù)據(jù)信息
防止抵賴
jwt鑒權(quán)授權(quán)
非對(duì)稱可逆加密Rsa
1)規(guī)則:
非對(duì)稱可逆加密:有一套公開的加密解密算法,公開的,大家都知道
同時(shí)有一組加密解密Key,這組Key是成套的,且兩個(gè)Key不一樣;無法通過加密算法推導(dǎo)出這一組Key;且具有私有Key和公有Key之分,私有Key就是只有自己知道的,私有化的;可以加密也可以解密;公有Key,是公開的,所有人都可以知道。
注意:在其他的有些實(shí)現(xiàn)中,是私有Key加密,公有Key解密,這個(gè)是為了能夠做簽名;在C#中的實(shí)現(xiàn),提供的Api是公有Key加密,智能由私有Key解密;關(guān)于簽名這個(gè)由另外的api支持。
2)特點(diǎn):
原文短--加密后--密文長(zhǎng)
加密速度相對(duì)要慢
安全性超強(qiáng)---成套的加密解密key不一樣
3)作用
數(shù)字簽名
防止抵賴
簽名:實(shí)際在數(shù)字簽名的時(shí)候,是需要私有key加密,公有key解密的;
數(shù)字簽名和數(shù)字證書
1)簽名
歷史中的通信,都是通過書信來傳遞信息,那么在寫信的時(shí)候,除了寫信件的正文,在信件的最后,需要一個(gè)寫信人的親筆簽名,這叫標(biāo)注,這封信是來自于誰的,誰寫出的這封信。也可以通過字跡來比那別真?zhèn)巍H绻腥藖砻俺?,可以通過字跡來辨別,那么這個(gè)親筆簽名就有很大作用了
現(xiàn)在傳輸信息是互聯(lián)網(wǎng)傳輸信息,那么在傳輸?shù)倪^程中,也需要明確指定這個(gè)信息是從哪兒傳來的,那么就需要明確的簽名來指定是誰發(fā)的。網(wǎng)絡(luò)傳輸是很不安全的,如果直接傳輸數(shù)據(jù),數(shù)據(jù)信息由可能會(huì)被篡改。