對稱加密 非對稱加密,實現資料安全傳輸

2021-08-25 05:35:23 字數 3342 閱讀 1532

一般金融類的產品,涉及前端和後端互動的時候,都會都嚴格的資料安全保證。防止黑客攻擊,資訊篡改。

加密方式有很多,總的來說,分為2種:對稱和非對稱。我們先來看一下,這兩種加密方式分別是什麼?他們有什麼區別?

對稱加密:

對稱加密,即採用對稱的密碼編碼技術,他的特點是,加密和解密使用相同的秘鑰。

常見的對稱加密演算法有des、3des、blowfish、idea、rc4、rc5、rc6和aes。對稱加密演算法使用起來簡單快捷,金鑰較短,且破譯困難。

但是對稱秘鑰在使用過程中存在以下問題:

1、對稱加密演算法一般不能提供資訊完整性的鑑別。它無法驗證傳送者和接受者的身份;

2、對稱金鑰的管理和分發工作是一件具有潛在危險的和煩瑣的過程。如何防止秘鑰洩露是乙個難點。

非對稱加密:

非對稱加密技術,需要兩個秘鑰,公鑰和私鑰。公鑰和私鑰成對出現。

如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。

非對稱加密演算法實現機密資訊交換的基本過程是:甲方生成一對金鑰並將其中的一把作為公用金鑰向其它方公開;得到該公用金鑰的乙方使用該金鑰對機密資訊進行加密後再傳送給甲方;甲方再用自己儲存的另一把專用金鑰對加密後的資訊進行解密。甲方只能用其專用金鑰解密由其公用金鑰加密後的任何資訊。

非對稱加密的典型應用是數字簽名。

常見的非對稱加密演算法有:rsa、ecc(移動裝置用)、diffie-hellman、el gamal、dsa(數字簽名用)。

對稱+非對稱:

先看一張流程圖:

先看傳送方:

這裡,我們主要有2步操作。

1、報文原文使用對稱加密技術。對稱加密的秘鑰(避免混淆,這裡稱對稱密碼)。根據隨機數生成。每次發起請求時,會重新產生乙個隨機數,進一步降低被破解的風險。      

2、對稱密碼通過非對稱加密方式進行加密。公鑰由後台產生,匹配的私鑰由後台保管。這樣產生乙個加密後的對稱密碼。前端在傳送給後端之後,後端需要用匹配的私鑰才能解開。

再看接收方:

接收方在接收到資料報之後,同樣有兩步操作:

1、會使用匹配的私鑰解密加密的對稱密碼,獲取到真實的對稱密碼。

2、使用對稱密碼,解密加密報文,獲取原報文內容。

這樣做的好處是:

1、因為我們的對稱密碼是使用非對稱加密的,因此,想要破解,需要找到相應的公鑰才行。

2、每次請求會重新生成乙個對稱密碼,這就加大了破解的難度。

**實現:

工具類:

非對稱加密:

public class rsa1 

/*** 通過字串生成私鑰

*/public static privatekey getprivatekey(string privatekeydata) catch (nosuchalgorithmexception e) catch (invalidkeyspecexception e)

return privatekey;

}/**

* 通過字串生成公鑰

*/public static publickey getpublickey(string publickeydata) catch (nosuchalgorithmexception e) catch (invalidkeyspecexception e)

return publickey;

}/**

* 加密

*/public static byte encrypt(string data, key key) catch (exception e)

return null;

}/**

* 解密

*/public static byte decrypt(byte data, key key) catch (exception e)

return null;}}

對稱加密:

public class aes_2 

public static byte encrypt(string content, secretkeyspec key) catch (exception e)

return null;

}public static string decrypt(byte cryptograph, secretkeyspec key) catch (exception e)

return null;

}public static byte encrypt(string content, string password) catch (exception e)

return null;

}public static string decrypt(byte cryptograph, string password) catch (exception e)

return null;

}public static string parsebyte2hexstr(byte buf)

}return sb.tostring();

}public static byte parsehexstr2byte(string hexstr)

return result;

}public static byte tohash256deal(string datastr) catch (nosuchalgorithmexception e) }}

傳送方和接收方的實現:

掃碼關注,共同進步

對稱加密 非對稱加密

區別在於加密金鑰和解密金鑰是否一樣,一樣則是對稱加密,不一樣則是非對稱加密。對稱加密計算量小,但若不同的客戶端使用不能的金鑰時,伺服器的複雜大。常用的對稱加密包括 des 3des aes des 3des使用的架構為feistel。des金鑰長度為56位,3des相容des,可設定3個56位密碼,...

對稱加密 非對稱加密

1 對稱加密 對稱加密採用了對稱密碼編碼技術,它的特點是檔案加密和解密使用相同的金鑰,即加密金鑰也可以用作解密金鑰,這種方法在密碼學中叫做對稱加密演算法,對稱加密演算法使用起來簡單快捷,金鑰較短,且破譯困難,除了資料加密標準 des 另乙個對稱金鑰加密系統是國際資料加密演算法 idea 它比des的...

對稱加密 非對稱加密

演算法選擇 對稱加密aes,非對稱加密 ecc,訊息摘要 md5,數字簽名 dsa 對稱加密演算法 加解密金鑰相同 名稱金鑰長度 運算速度 安全性資源消耗 des56位較快低 中3des 112位或168位慢中 高aes 128 192 256位快高 低非對稱演算法 加密金鑰和解密金鑰不同 名稱成熟...