幾種加密解密簡介

普遍的加密方法:客戶端用RSA的公鑰加密AES的秘鑰,服務器端用私鑰解開獲得的AES的秘鑰,客戶端再與服務器端進行AES加密的數據傳輸,即HTTPS協議傳輸的原理

加密解密概念

對稱加密算法:加密解密都使用相同的秘鑰,速度快,適合對大數據加密,方法有DES,3DES,AES等

非對稱加密算法

非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)

公開密鑰與私有密鑰是一對,可逆的加密算法,用公鑰加密,用私鑰解密,用私鑰加密,用公鑰解密,速度慢,適合對小數據加密,方法有RSA

散列算法(加密后不能解密,上面都是可以解密的)

用于密碼的密文存儲,服務器端是判斷加密后的數據

不可逆加密方法:MD5、SHA1、SHA256、SHA512


RSA流程:

假設A、B雙方均擁有一對公私鑰(PUB_A、PRI_A、PUB_B、PRI_B)。

A向B發送Message的整個簽名和加密的過程如下:

A先使用HASH對Message生成一個固定長度的信息摘要Message_hash_A

A使用A的私鑰PRI_A對Message_hash_A進行簽名得到Message_sign(這里為什么不直接對Message進行簽名,而要對Message_hash_A進行簽名呢?因為Message的長度可能很長,而Message_hash_A的長度則是固定的,這樣性能更高,格式也固定,況且hash的結果一般不會出現重復的可能)

A接著使用B的公鑰PUB_B對信息Message和信息Message_sign進行加密得到Message_RSA,這時A將Message_RSA發送給B。

當B接收到A的信息Message_RSA后,獲取Message的步驟如下:

B用自己的私鑰PRI_B解密得到明文:Message和Message_sign;

然后B使用A的公鑰PUB_A解Message_sign得到Message_hash_A;同時,B再對Message使用與A相同的HASH得到Message_hash_B;

如果Message_hash_A與Message_hash_B相同,則說明Message沒有被篡改過。

上面的過程中,A知道A的公私鑰同時也要知道B的公鑰;同理B要知道A的公鑰和B的公私鑰

關于公私鑰再打個比方:公鑰就像一把鎖一樣將數據鎖住;私鑰就像鑰匙一樣,能將對應的鎖打開。

公鑰加密,私鑰解密的好處是:公鑰可以公開,那么無論誰有公鑰都可以給你發送信息,而且也只有你才能解密

我們經常使用的Github就是使用了簽名的方法,SSH,在本地電腦生成一對公私鑰,將公鑰傳到github,然后使用私鑰進行簽名,github通過公鑰延簽后認為你的身份合法。

另外,加密和編碼是不一樣的,比如ASCII是屬于編碼,是將0~255與字符一一對應。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容