[C#.NET] AES 與 RSA 的加解密效能比較
不論是微軟還是維基,都表明RSA的加解密效能遠不如其他演算法,那也正是RSA演算法較安全之故,也因此不利做大檔案的加解密。
以下將來演練一下兩者的效能
兩種演算法的測試來源條件都相同:
字串:1613 Byte
檔案:9437238 Byte
Object:349 Byte
測試環境
AES:
IV長度:16 Byte
KEY長度:32 Byte
RSA:
金鑰長度:1024 bit
測試結果如下:
由上圖得知,在測試大檔案(9MByte)的時候,RSA所消耗的時間較多。
再將RSA的金鑰長度提升到2048,真的是跑到天荒地老快睡著,Key越大加密效果(安全性)越好,資料也被放大,不管什麼樣的加密資料都會被放大。
對於大檔案,我們可以怎麼做?
讓AES跟RSA合體吧!
參考
http://zh.wikipedia.org/zh-hant/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95
我們把AES的Key/IV,經過RSA加密後,給AES加密,流程如下:
演算法的實作在前面幾篇已經做過了,在這裡就直接看範例演練了,有興趣的人請自行下載。
A廠商:產生金鑰,下圖產生了好幾組Key,可以發現每組Key長的都不一樣。
A廠商:用自己產生的 Key 加密
B廠商:拿著A廠商的 Key 跟加密後的資料解密
範例下載:
內無防呆跟設計模式,請依自己的需求更改範例。
https://github.com/yaochangyu/sample.dotblog/tree/master/Crypto/RsaCrypto-1
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET