一.MD5加密
MD5加密是最常用的加密方法之一,是從一段字符串中通過相應(yīng)特征生成一段32位的數(shù)字字母混合碼喂窟。
MD5主要特點是
不可逆测暗,相同數(shù)據(jù)的MD5值肯定一樣,不同數(shù)據(jù)的MD5值不一樣(也不是絕對的磨澡,但基本是不能一樣的)碗啄。
MD5算法還具有以下性質(zhì):
1、壓縮性:任意長度的數(shù)據(jù)稳摄,算出的MD5值長度都是固定的稚字。
2、容易計算:從原數(shù)據(jù)計算出MD5值很容易厦酬。
3胆描、抗修改性:對原數(shù)據(jù)進行任何改動,哪怕只修改1個字節(jié)弃锐,所得到的MD5值都有很大區(qū)別袄友。
4殿托、弱抗碰撞:已知原數(shù)據(jù)和其MD5值霹菊,想找到一個具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
5支竹、強抗碰撞:想找到兩個不同的數(shù)據(jù)旋廷,使它們具有相同的MD5值,是非常困難的礼搁。
MD5雖然說是不可逆的
但是由于有網(wǎng)站http://www.cmd5.com的存在饶碘,專門用來查詢MD5碼 所以有的簡單的MD5碼是可以在這里搜到源碼的。
為了讓MD5碼更加安全
涌現(xiàn)了很多其他方法 如加鹽馒吴。 鹽要足夠長足夠亂 得到的MD5碼就很難查到扎运。
終端代碼:$
echo -n abc|openssl md5 ? ? ? ? ?給字符串a(chǎn)bc加密
二.HMAC加密
此加密方法需要先生成密鑰,然后再對密碼進行MD5和HMAC加密饮戳,數(shù)據(jù)庫中需要存放當時使用的密鑰和密碼加密后的密文
在用戶登陸時
再次對填入的密碼用密鑰進行加密 并且還要加上當前時間(精確到分鐘)
再次HMAC加密豪治,服務(wù)器里也會拿出以前存放的密文加上時間再次加密。所以就算黑客在中途截取了密碼的密文
也在能在1分鐘只能破譯才能有效扯罐,大大加強了安全性负拟。服務(wù)器為了考慮到網(wǎng)絡(luò)的延遲一般會多算一種答案,如23分過來的密碼
他會把23分和22分的都算一下和用戶匹配只要對上一個就允許登陸歹河。
如圖
用戶注冊與用戶登錄
三.base64加密
在MIME格式的電子郵件中掩浙,base64可以用來將binary的字節(jié)序列數(shù)據(jù)編碼成ASCII字符序列構(gòu)成的文本花吟。使用時,在傳輸編碼方式中指
定base64厨姚。使用的字符包括大小寫字母各26個衅澈,加上10個數(shù)字,和加號“+”遣蚀,斜杠“/”矾麻,一共64個字符,等號“=”用來作為后綴用途芭梯。
完整的base64定義可見RFC
1421和RFC 2045险耀。編碼后的數(shù)據(jù)比原始數(shù)據(jù)略長,為原來的4/3玖喘。
原理圖
終端指令
先cd 找到當前目錄
加密: $
base64 abc.png -o abc.txt
解密:?$
base64 abc.txt -o 123.png -D
四.對稱加密算法
優(yōu)點:算法公開甩牺、計算量小、加密速度快累奈、加密效率高贬派、可逆
缺點:雙方使用相同鑰匙,安全性得不到保證
現(xiàn)狀:對稱加密的速度比公鑰加密快很多澎媒,在很多場合都需要對稱加密搞乏,
相較于DES和3DES算法而言,AES算法有著更高的速度和資源使用效率戒努,安全級別也較之更高了请敦,被稱為下一代加密標準
nECB
:電子代碼本,就是說每個塊都是獨立加密的
nCBC
:密碼塊鏈储玫,使用一個密鑰和一個初始化向量 (IV)對數(shù)據(jù)執(zhí)行加密轉(zhuǎn)換
ECB和CBC區(qū)別:CBC更加復(fù)雜更加安全侍筛,里面加入了8位的向量(8個0的話結(jié)果等于ECB)。在明文里面改一個字母撒穷,ECB密文對應(yīng)的那一行會改變匣椰,CBC密文從那一行往后都會改變。
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
五.RSA加密
RSA非對稱加密算法
非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
公開密鑰與私有密鑰是一對端礼,如果用公開密鑰對數(shù)據(jù)進行加密禽笑,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密蛤奥,那么只有用對應(yīng)的公開密鑰才能解密
特點:
非對稱密碼體制的特點:算法強度復(fù)雜佳镜、安全性依賴于算法與密鑰但是由于其算法復(fù)雜,而使得加密解密速度沒有對稱加密解密的速度快
對稱密碼體制中只有一種密鑰喻括,并且是非公開的邀杏,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰望蜡,其中一個是公開的唤崭,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了
基本加密原理:
(1)找出兩個“很大”的質(zhì)數(shù):P
& Q
(2)N = P *
Q
(3)M = (P
– 1) * (Q – 1)
(4)找出整數(shù)E,E與M互質(zhì)脖律,即除了1之外谢肾,沒有其他公約數(shù)
(5)找出整數(shù)D,使得E*D除以M余1小泉,即
(E * D) % M = 1
經(jīng)過上述準備工作之后芦疏,可以得到:
E是公鑰,負責(zé)加密
D是私鑰微姊,負責(zé)解密
N負責(zé)公鑰和私鑰之間的聯(lián)系
加密算法酸茴,假定對X進行加密
(X ^ E) %
N = Y
n根據(jù)費爾馬小定義,根據(jù)以下公式可以完成解密操作
(Y ^ D) %
N = X
但是RSA加密算法效率較差兢交,對大型數(shù)據(jù)加密時間很長薪捍,一般用于小數(shù)據(jù)。
常用場景:
分部要給總部發(fā)一段報文配喳,先對報文整個進行MD5得到一個報文摘要酪穿,再對這個報文摘要用公鑰加密。然后把報文和這個RSA密文一起發(fā)過去晴裹。
總部接收到報文之后要先確定報文是否在中途被人篡改被济,就先把這個密文用私鑰解密得到報文摘要,再和整個報文MD5一下得到的報文摘要進行對比
如果一樣就是沒被改過涧团。