?? aes.cpp
字號(hào):
#include <iostream>
using namespace std;
#include <cryptopp/aes.h>
using namespace CryptoPP;
int main()
{
//AES中使用的固定參數(shù)是以類AES中定義的enum數(shù)據(jù)類型出現(xiàn)的,而不是成員函數(shù)或變量
//因此需要用::符號(hào)來索引
cout << "AES Parameters: " << endl;
cout << "Algorithm name : " << AES::StaticAlgorithmName() << endl;
//Crypto++庫(kù)中一般用字節(jié)數(shù)來表示長(zhǎng)度,而不是常用的字節(jié)數(shù)
cout << "Block size : " << AES::BLOCKSIZE * 8 << endl;
cout << "Min key length : " << AES::MIN_KEYLENGTH * 8 << endl;
cout << "Max key length : " << AES::MAX_KEYLENGTH * 8 << endl;
//AES中只包含一些固定的數(shù)據(jù),而加密解密的功能由AESEncryption和AESDecryption來完成
//加密過程
AESEncryption aesEncryptor; //加密器
unsigned char aesKey[AES::DEFAULT_KEYLENGTH]; //密鑰
unsigned char inBlock[AES::BLOCKSIZE] = "123456789"; //要加密的數(shù)據(jù)塊
unsigned char outBlock[AES::BLOCKSIZE]; //加密后的密文塊
unsigned char xorBlock[AES::BLOCKSIZE]; //必須設(shè)定為全零
memset( xorBlock, 0, AES::BLOCKSIZE ); //置零
aesEncryptor.SetKey( aesKey, AES::DEFAULT_KEYLENGTH ); //設(shè)定加密密鑰
aesEncryptor.ProcessAndXorBlock( inBlock, xorBlock, outBlock ); //加密
//以16進(jìn)制顯示加密后的數(shù)據(jù)
for( int i=0; i<16; i++ ) {
cout << hex << (int)outBlock[i] << " ";
}
cout << endl;
//解密
AESDecryption aesDecryptor;
unsigned char plainText[AES::BLOCKSIZE];
aesDecryptor.SetKey( aesKey, AES::DEFAULT_KEYLENGTH );
aesDecryptor.ProcessAndXorBlock( outBlock, xorBlock, plainText );
for( int i=0; i<16; i++ ) { cout << plainText[i]; }
cout << endl;
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -