encryption - 如何選擇AES加密模式( CBC ECB CTR OCB CFB ) ?

在哪種情況下最好選擇哪個?

时间:

  • 如果使用同一密鑰加密多個數據塊,則不應使用ECB。

  • CBC,OFB和CFB相似,但是OFB/CFB更好,因為您只需要加密而不需要解密,可以節省代碼空間。

  • 如果您想獲得良好的並行化效果,請使用CTR(速度),而不是CBC/OFB/CFB。

  • 如果您正在編碼隨機可訪問的數據(例如硬碟或RAM),則XTS模式是最常見的。

  • OCB是迄今為止最好的模式,因為它允許一次通過加密和身份驗證。但美國有專利。

  • 未定義未定義未定義

我有同樣的問題,這是我有限研究的結果。

硬體限制


STM32L (low energy ARM cores) from ST Micro support EBC, CBC,CTR GCM
CC2541 (Bluetooth Low Energy) from TI supports ECB, CBC, CFB, OFB, CTR, and CBC-MAC

開放源代碼限制


Original rijndael-api source - ECB, CBC, CFB1
OpenSSL - command line CBC, CFB, CFB1, CFB8, ECB, OFB
OpenSSL - C/C++ API CBC, CFB, CFB1, CFB8, ECB, OFB and CTR
EFAES lib [1] - ECB, CBC, PCBC, OFB, CFB, CRT ([sic] CTR mispelled) 
OpenAES [2] - ECB, CBC 

[1] http://www.codeproject.com/Articles/57478/A-Fast-and-Easy-to-Use-AES-Library

[2] https://openaes.googlecode.com/files/OpenAES-0.8.0.zip

...