AES和RSA區別
算法 | 類型 | 安全性 | 密鑰長度/輸出長度 | 速度 | 應用場景 |
---|---|---|---|---|---|
AES | 對稱加密 | 高 | 128位、192位、256位 | 快 | 適用于大規模數據加密,入HTTPS協議的數據傳輸 |
RSA | 非對稱加密 | 高 | 1024位、2048位、4096位 | 較慢 | 適用于數據安全傳輸、數字簽名和身份驗證 |
綜上:兼顧安全性和性能,避免RSA處理大量數據的瓶頸,采用下面方式
RSA 送鑰匙(AES 密鑰)+ AES 鎖數據
流程圖
+-------------------+ +---------------------+ +-------------------+
| 前端(用戶) | | 網絡傳輸 | | 后端(服務器) |
+-------------------+ +---------------------+ +-------------------+| | || 1. 生成隨機AES密鑰 | ||------------------------------>| || | || 2. 用RSA公鑰加密AES密鑰 | ||------------------------------>| || | || 3. 用AES密鑰加密支付數據 | ||------------------------------>| || | || 4. 發送加密后的數據 + 加密的AES密鑰 | ||----------------------------->|----------------------------->|| | || | 5. 用RSA私鑰解密AES密鑰 || |<------------------------------|| | || | 6. 用AES密鑰解密支付數據 || |<------------------------------|| | || | 7. 處理支付完成 || | |
+-------------------+ +---------------------+ +-------------------+
分步解釋
1. 前端生成隨機AES密鑰
- 用戶輸入支付信息(如銀行卡號)時,前端生成一個隨機的AES密鑰(對稱加密密鑰)。
2. 用RSA公鑰加密AES密鑰
- 前端用后端提供的 RSA公鑰,加密這個AES密鑰,得到加密后的AES密鑰。
3. 用AES密鑰加密支付數據
- 前端用生成的AES密鑰,加密支付數據(如銀行卡號),得到加密后的支付數據。
4. 發送加密內容到后端
- 前端將 加密后的支付數據 和 加密后的AES密鑰 一起發送給后端。
5. 后端用RSA私鑰解密AES密鑰
- 后端用自己的 RSA私鑰 解密收到的加密AES密鑰,得到原始的AES密鑰。
6. 后端用AES密鑰解密支付數據
- 后端用解密出的AES密鑰,解密支付數據,得到明文銀行卡號。
7. 處理支付
- 后端完成支付邏輯(如驗證卡號、扣款等)。
關鍵點
-
RSA 管鑰匙(AES密鑰)
RSA 加密速度慢,但適合加密小數據(如短小的AES密鑰)。
-
AES 管數據
AES 加密速度快,適合加密大量數據(如長文本、文件)。
-
安全性
即使黑客截獲數據,沒有RSA私鑰無法解密AES密鑰,沒有AES密鑰也無法解密支付數據。
-
效率
綜合了RSA的安全性和AES的高效性,適合實際應用。
一句話總結
前端:(AES密鑰 + 支付數據) → RSA加密AES密鑰 → AES加密數據 → 發送
后端:RSA解密AES密鑰 → AES解密數據 → 完成支付 ?