aes加密是一种对称加密。
openssl的aes加密接口,要求数据是AES_BLOCK_SIZE的整数倍,所以当源数据不是16的整数倍时,需要填充一些字节。
一下是一个封装aes加密的例子:
bool AESEncrypt(const std::string& key, const std::string& src, std::string& encrypt, int aes_key_bits) {
std::string plain = src;
if (key.empty() || plain.empty()) {
return false;
}
int data_length = plain.length();
if (data_length % AES_BLOCK_SIZE != 0){
int append_data_length = (data_length / AES_BLOCK_SIZE + 1) * AES_BLOCK_SIZE;
int padding_data = 0;
plain.append(append_data_length - data_length, padding_data);
data_length = append_data_length;
}
unsigned char * input = new unsigned char[data_length +