資源簡介
AES_allmode.rar

代碼片段和文件信息
//?aestest2.cpp?:?定義控制臺應(yīng)用程序的入口點。
//
#include?“stdafx.h“
#include?
#include???????//?StreamTransformationFilter
#include?????//?CFB_Mode
#include? ???//?std:cerr??
#include? ???//?std::stringstream??
#include?
using?namespace?std;
using?namespace?CryptoPP;
#pragma?comment(?lib?“cryptlib.lib“?)
std::string?ECB_AESEncryptStr(std::string?sKey?const?char?*plainText)
{
????std::string?outstr;
??????
????//填key??
????SecByteBlock?key(AES::MAX_KEYLENGTH);??
????memset(key0x30key.size()?);??
????sKey.size()<=AES::MAX_KEYLENGTH?memcpy(keysKey.c_str()sKey.size()):memcpy(keysKey.c_str()AES::MAX_KEYLENGTH);??
??????????
??????
????AES::Encryption?aesEncryption((byte?*)key?AES::MAX_KEYLENGTH);??
??????
????ECB_Mode_ExternalCipher::Encryption?ecbEncryption(aesEncryption);
????StreamTransformationFilter?ecbEncryptor(ecbEncryption?new?HexEncoder(new?StringSink(outstr)));??
????ecbEncryptor.Put((byte?*)plainText?strlen(plainText));??
????ecbEncryptor.MessageEnd();??
??????
????return?outstr;??
}??
std::string?ECB_AESDecryptStr(std::string?sKey?const?char?*cipherText)??
{??
????std::string?outstr;??
??????
????//填key??
????SecByteBlock?key(AES::MAX_KEYLENGTH);??
????memset(key0x30key.size()?);??
????sKey.size()<=AES::MAX_KEYLENGTH?memcpy(keysKey.c_str()sKey.size()):memcpy(keysKey.c_str()AES::MAX_KEYLENGTH);??
??????????
????ECB_Mode::Decryption?ecbDecryption((byte?*)key?AES::MAX_KEYLENGTH);??
??????????
????HexDecoder?decryptor(new?StreamTransformationFilter(ecbDecryption?new?StringSink(outstr)));??
????decryptor.Put((byte?*)cipherText?strlen(cipherText));??
????decryptor.MessageEnd();??
??????
????return?outstr;??
}??
std::string?CBC_AESEncryptStr(std::string?sKey?std::string?sIV?const?char?*plainText)
{
????std::string?outstr;
??????
????//填key??
????SecByteBlock?key(AES::MAX_KEYLENGTH);??
????memset(key0x30key.size()?);??
????sKey.size()<=AES::MAX_KEYLENGTH?memcpy(keysKey.c_str()sKey.size()):memcpy(keysKey.c_str()AES::MAX_KEYLENGTH);??
??????????
????//填iv??
????byte?iv[AES::BLOCKSIZE];??
????memset(iv0x30AES::BLOCKSIZE);?
sIV.size()<=AES::BLOCKSIZE?memcpy(ivsIV.c_str()sIV.size()):memcpy(ivsIV.c_str()AES::BLOCKSIZE);
??????
????AES::Encryption?aesEncryption((byte?*)key?AES::MAX_KEYLENGTH);??
??????
????CBC_Mode_ExternalCipher::Encryption?cbcEncryption(aesEncryption?iv);??
??????
????StreamTransformationFilter?cbcEncryptor(cbcEncryption?new?HexEncoder(new?StringSink(outstr)));??
????cbcEncryptor.Put((byte?*)plainText?strlen(plainText));??
????cbcEncryptor.MessageEnd();??
??????
????return?outstr;??
}??
std::string?CBC_AESDecryptStr(std::string?sKey?std::string?sIV?const?char?*cipherText)??
{??
????std::string?outstr;??
??????
????//填key??
????SecByteBlock?key(AES::MAX_KEYLENGTH);??
????memset(key0x30key.size()?);??
????sKey.size()<=AES::MAX_KEY
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14106??2013-03-31?20:25??aestest2\aestest2\aestest2.cpp
?????文件???????4638??2013-03-29?21:57??aestest2\aestest2\aestest2.vcxproj
?????文件???????1312??2013-03-29?21:49??aestest2\aestest2\aestest2.vcxproj.filters
?????文件????????143??2013-03-29?21:49??aestest2\aestest2\aestest2.vcxproj.user
?????文件???????1560??2013-03-29?21:49??aestest2\aestest2\ReadMe.txt
?????文件????????213??2013-03-29?21:49??aestest2\aestest2\stdafx.cpp
?????文件????????233??2013-03-29?21:49??aestest2\aestest2\stdafx.h
?????文件????????236??2013-03-29?21:49??aestest2\aestest2\targetver.h
?????文件????????891??2013-03-29?21:49??aestest2\aestest2.sln
????..A..H.?????11776??2013-03-31?20:25??aestest2\aestest2.suo
?????文件????1807360??2013-03-31?20:25??aestest2\Debug\aestest2.exe
?????目錄??????????0??2013-03-31?20:26??aestest2\aestest2
?????目錄??????????0??2013-03-31?20:26??aestest2\Debug
?????目錄??????????0??2013-03-31?20:26??aestest2
-----------?---------??----------?-----??----
??????????????1842468????????????????????14
評論
共有 條評論