1. 程式人生 > >對稱和非對稱加解密

對稱和非對稱加解密

32位 tro 進行 ont 什麽 金融 被鎖 方式 str

對稱

DES:
DES算法 再大多運用在 如信用卡持卡人的PIN的加密傳輸,IC卡與POS間的雙向認證、金融交易數據包的MAC校驗等領域

DES算法的入口參數有三個:Key、Data、Mode。
Key為8個字節共64位,是DES算法的工作密鑰;
   Data也為8個字節64位,是要被加密或被解密的數據;
Mode為DES的工作方式,有兩種:加密或解密。
DES算法是這樣工作的:
   如Mode為加密,則用Key 去把數據Data進行加密, 生成Data的密碼形式(64位)作為DES的輸出結果
如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。
在通信網絡的兩端,雙方約定一致的Key

3DES
在 DES 的基礎上,使用三重數據加密算法,對數據進行加密,這樣來說,破解的概率就小了很多
使用 3 條 56 位的密鑰對數據進行三次加密。3DES是 DES 向 AES 過渡的加密算法
K1、K2、K3決定了算法的安全性,若三個密鑰互不相同,本質上就相當於用一個長為168位的密鑰進行加密。.它在對付強力攻擊時是比較安全的。若數據對安 全性要求不那麽高
K1可以等於K3。這種情況下密鑰的有效長度為112位


AES
高級加密標準,是下一代的加密算法標準,速度快,安全級別高
AES算法基於排列和置換運算。排列是對數據重新進行安排,置換是將一個數據單元替換為另一個,AES是一個叠代的、對稱密鑰分組的密碼,它可以使用128、 192和256位密鑰, 並且用128位(16字節)分組加密和解密數據

算法 Key 位數 是否可逆 其它
MD5 沒有Key, 有區別16位和32位, 不可逆 (無)
SHA (?) (?) 不可逆 (無)
RSA 有(公Key,私KEY) (?) 可逆 公、私Key采用不同的加密算法
DES3 有 (?) 可逆 (無)
AES 有 (?) 可逆 (無)
BASE64 沒有KEY (?) 可逆 (無)

哈希函數:MD5,SHA 是沒有密鑰的,相當與指紋的概念,因此也是不可逆的;
md5是128位的,SHA有不同的算法,有128,256等位。。。如SHA-256,SHA-384
Base64,這更加不屬於加密算法的範圍了,它只是將byte[]數組進行了轉換,為什麽要轉換呢?就是因為很多加密後的密文後者一些特殊的byte[]數組需要顯示出來,或者需要進行傳遞(電子郵件),但是直接轉換就會導致很多不可顯示的字符,會丟失一些信息,因此就轉換位Base64編碼,這些都是可顯示的字符。所以轉換後長度會增加。它是可逆的

再就是 3DES,DES 這才是加密算法,因此也是可逆的,加解密需要密鑰,也就是你說的key

最後是 RSA ,這是公鑰密碼,也就是加密和解密密鑰不同,也是可逆的。

非對稱 rsa
非對稱加密DH為了更好的區分明文和密文,用【AA】代表AA被加密,AA 代表正常未加密
client 發出請求
server 收到請求,並自己生成一對密鑰,即 公鑰S 和 私鑰S
server 把生成的 公鑰S 傳遞給 client (除了 公鑰S ,還有很多額外信息)
client 收到 公鑰S 後進行判斷,若無效,彈出警告,否則生成一串隨機數,我們稱之為 私鑰C ,然後 client 用 server 傳過來的 公鑰S 對該隨機數加密,形成【私鑰C】
client 把【私鑰C】傳遞給 server
server 收到【私鑰C】,用 私鑰S 把【私鑰C】解密成 私鑰C,然後把需要傳遞的數據用 私鑰C 進行加密
server 把【數據】傳遞給 client
client 收到【數據】,用 私鑰C 解密,完成一波收割


整體流程就是這樣,那麽就想問,為什麽有這麽多 key?一會公鑰一會私鑰?很煩?
那我們先假設 server 有私鑰和公鑰,那麽傳遞給 client 公鑰,client 用公鑰加密數據,傳遞給 server,server 用私鑰再解密,聽上去很美好,但是很煩,因為涉及到對稱加密和非對稱加密

對稱加密是指加密和解密用一致的密鑰,特點是快
非對稱加密是指密鑰區分公鑰和私鑰,公鑰加密,私鑰解密(私鑰好比唯逐個把鑰匙,公鑰好比鎖,鑰匙只有一把,但鎖可以有很多,被鎖頭鎖上的數據全天下只有一把私鑰才能 單開),特點是安全,但是慢
這回理解了吧,上述方式缺點是 慢,所以 https 的流程綜合了對稱加密和非對稱加密的優點,利用非對稱加密的安全性來加密那一串隨機數--私鑰C,利用對稱加密的快捷性來加
密報文,總體來說就是把真正加密解密的密鑰(私鑰C)用公鑰S和私鑰S來加密,很靈性啊。

對稱和非對稱加解密