AES分組加密簡介


AES分組加密簡介

1、首先應該明白AES是基於數據塊的加密方式,也就是說,每次處理的數據是一塊(16字節),當數據不是16字節的倍數時填充,這就是所謂的分組密碼(區別於基於比特位的流密碼),16字節是分組長度。

2、分組加密的幾種方式

ECB:是一種基礎的加密方式,密文被分割成分組長度相等的塊(不足補齊),然后單獨一個個加密,一個個輸出組成密文。

CBC:是一種循環模式,前一個分組的密文和當前分組的明文異或操作后再加密,這樣做的目的是增強破解難度。

CFB/OFB實際上是一種反饋模式,目的也是增強破解的難度。

ECBCBC的加密結果是不一樣的,兩者的模式不同,而且CBC會在第一個密碼塊運算時加入一個初始化向量。

3、兩個api

void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,    const AES_KEY *key, const int enc);

AES加密/解密單個數據塊,ECB模式

in: 需要加密/解密的數據;

out: 計算后輸出的數據;

key:密鑰

enc: AES_ENCRYPT 代表加密, AES_DECRYPT代表解密;

void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,   size_t length, const AES_KEY *key,    unsigned char *ivec, const int enc);

AES加密/解密單個數據塊,CBC模式

in: 需要加密/解密的數據;

out: 計算后輸出的數據;

length: 數據長度

key:密鑰

ivec: 初始向量

enc: AES_ENCRYPT 代表加密, AES_DECRYPT代表解密;

原文

http://bbs.csdn.net/topics/330033279

OpenSSL 之 Command & API

http://hi.baidu.com/orxor/item/e0b4bc69774a4b0da0cf0f2b

http://bbs.csdn.net/topics/390448993

Openssl AES 總結函數的參數含義

http://blog.csdn.net/sunspider107/article/details/7375816

https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM