一、MD5
MD5:全稱是Message Digest Algorithm 5赔癌,譯為“消息摘要算法第5版”,MD5編碼是最常用的編碼方法之一,是從一段字符串中通過(guò)相應(yīng)特征生成一段32位的數(shù)字字母混合碼(MD5破解網(wǎng)站:http://www.cmd5.com)母市。
MD5主要特點(diǎn)是 不可逆,相同數(shù)據(jù)的MD5值肯定一樣损趋,不同數(shù)據(jù)的MD5值不一樣(也不是絕對(duì)的患久,但基本是不能一樣的)。
MD5算法還具有以下性質(zhì):
1浑槽、壓縮性:任意長(zhǎng)度的數(shù)據(jù)蒋失,算出的MD5值長(zhǎng)度都是固定的。
2桐玻、容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易篙挽。
3、抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng)镊靴,哪怕只修改1個(gè)字節(jié)铣卡,所得到的MD5值都有很大區(qū)別。
4偏竟、弱抗碰撞:已知原數(shù)據(jù)和其MD5值煮落,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
5踊谋、強(qiáng)抗碰撞:想找到兩個(gè)不同的數(shù)據(jù)蝉仇,使它們具有相同的MD5值,是非常困難的殖蚕。
6轿衔、MD5改進(jìn):現(xiàn)在的MD5已不再是絕對(duì)安全,對(duì)此睦疫,可以對(duì)MD5稍作改進(jìn)呀枢,以增加解密的難度
加鹽(Salt):在明文的固定位置插入隨機(jī)串,然后再進(jìn)行MD5
先加密笼痛,后亂序:先對(duì)明文進(jìn)行MD5裙秋,然后對(duì)加密得到的MD5串的字符進(jìn)行亂序
總之宗旨就是:黑客就算攻破了數(shù)據(jù)庫(kù),也無(wú)法解密出正確的明文
7缨伊、MD5加密方式
(1).先將foundation框架導(dǎo)入
(2).將頭文件導(dǎo)入
(3).具體實(shí)現(xiàn)方法
二摘刑、RSA加密
RSA非對(duì)稱加密算法
非對(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)密鑰才能解密
特點(diǎn):
非對(duì)稱密碼體制的特點(diǎn):算法強(qiáng)度復(fù)雜谭胚、安全性依賴于算法與密鑰但是由于其算法復(fù)雜徐块,而使得加密解密速度沒(méi)有對(duì)稱加密解密的速度快
對(duì)稱密碼體制中只有一種密鑰未玻,并且是非公開(kāi)的,如果要解密就得讓對(duì)方知道密鑰胡控。所以保證其安全性就是保證密鑰的安全扳剿,而非對(duì)稱密鑰體制有兩種密鑰,其中一個(gè)是公開(kāi)的昼激,這樣就可以不需要像對(duì)稱密碼那樣傳輸對(duì)方的密鑰了
基本加密原理:
(1)找出兩個(gè)“很大”的質(zhì)數(shù):P & Q
(2)N = P * Q
(3)M = (P – 1) * (Q – 1)
(4)找出整數(shù)E庇绽,E與M互質(zhì),即除了1之外橙困,沒(méi)有其他公約數(shù)
(5)找出整數(shù)D瞧掺,使得E*D除以M余1,即 (E * D) % M = 1
經(jīng)過(guò)上述準(zhǔn)備工作之后凡傅,可以得到:
E是公鑰辟狈,負(fù)責(zé)加密
D是私鑰,負(fù)責(zé)解密
N負(fù)責(zé)公鑰和私鑰之間的聯(lián)系
加密算法夏跷,假定對(duì)X進(jìn)行加密
(X ^ E) % N = Y
n根據(jù)費(fèi)爾馬小定義上陕,根據(jù)以下公式可以完成解密操作
(Y ^ D) % N = X
但是RSA加密算法效率較差,對(duì)大型數(shù)據(jù)加密時(shí)間很長(zhǎng)拓春,一般用于小數(shù)據(jù)释簿。
常用場(chǎng)景:
分部要給總部發(fā)一段報(bào)文,先對(duì)報(bào)文整個(gè)進(jìn)行MD5得到一個(gè)報(bào)文摘要硼莽,再對(duì)這個(gè)報(bào)文摘要用公鑰加密庶溶。然后把報(bào)文和這個(gè)RSA密文一起發(fā)過(guò)去。
總部接收到報(bào)文之后要先確定報(bào)文是否在中途被人篡改懂鸵,就先把這個(gè)密文用私鑰解密得到報(bào)文摘要偏螺,再和整個(gè)報(bào)文MD5一下得到的報(bào)文摘要進(jìn)行對(duì)比 如果一樣就是沒(méi)被改過(guò)。
三匆光、對(duì)稱加密算法
優(yōu)點(diǎn):算法公開(kāi)套像、計(jì)算量小、加密速度快终息、加密效率高夺巩、可逆
缺點(diǎn):雙方使用相同鑰匙,安全性得不到保證
現(xiàn)狀:對(duì)稱加密的速度比公鑰加密快很多周崭,在很多場(chǎng)合都需要對(duì)稱加密柳譬,
相較于DES和3DES算法而言,AES算法有著更高的速度和資源使用效率续镇,安全級(jí)別也較之更高了美澳,被稱為下一代加密標(biāo)準(zhǔn)
nECB :電子代碼本,就是說(shuō)每個(gè)塊都是獨(dú)立加密的
nCBC :密碼塊鏈,使用一個(gè)密鑰和一個(gè)初始化向量 (IV)對(duì)數(shù)據(jù)執(zhí)行加密轉(zhuǎn)換
ECB和CBC區(qū)別:CBC更加復(fù)雜更加安全制跟,里面加入了8位的向量(8個(gè)0的話結(jié)果等于ECB)舅桩。在明文里面改一個(gè)字母,ECB密文對(duì)應(yīng)的那一行會(huì)改變雨膨,CBC密文從那一行往后都會(huì)改變擂涛。
ECB終端命令:
$ openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.bin
CBC終端命令:
$ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.txt -out msg2.bin