[C#.NET] AES 與 RSA 的加解密效能比較

  • 16991
  • 0
  • RSA
  • 2020-04-13

[C#.NET] AES 與 RSA 的加解密效能比較

不論是微軟還是維基,都表明RSA的加解密效能遠不如其他演算法,那也正是RSA演算法較安全之故,也因此不利做大檔案的加解密。

以下將來演練一下兩者的效能

兩種演算法的測試來源條件都相同:

字串:1613 Byte

檔案:9437238 Byte

Object:349 Byte

 

測試環境

AES:

IV長度:16 Byte

KEY長度:32 Byte

 

 

RSA:

金鑰長度:1024 bit

image

 

測試結果如下:

SNAGHTML808bcd

由上圖得知,在測試大檔案(9MByte)的時候,RSA所消耗的時間較多。

 

再將RSA的金鑰長度提升到2048,真的是跑到天荒地老快睡著,Key越大加密效果(安全性)越好,資料也被放大,不管什麼樣的加密資料都會被放大。

SNAGHTMLc19772


對於大檔案,我們可以怎麼做?

讓AES跟RSA合體吧!

參考

http://zh.wikipedia.org/zh-hant/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95

image

 

我們把AES的Key/IV,經過RSA加密後,給AES加密,流程如下:

image

 

演算法的實作在前面幾篇已經做過了,在這裡就直接看範例演練了,有興趣的人請自行下載。

A廠商:產生金鑰,下圖產生了好幾組Key,可以發現每組Key長的都不一樣。

image

 

A廠商:用自己產生的 Key 加密

B廠商:拿著A廠商的 Key 跟加密後的資料解密

image


範例下載:

內無防呆跟設計模式,請依自己的需求更改範例。

https://github.com/yaochangyu/sample.dotblog/tree/master/Crypto/RsaCrypto-1

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo