c++ aes
时间: 2023-07-01 21:20:27 浏览: 65
C++ 中实现 AES 加密可以使用 OpenSSL 库。下面是一个简单的示例代码:
```c++
#include <openssl/aes.h>
#include <string.h>
#include <iostream>
// 加密函数
void aes_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key) {
AES_encrypt(in, out, key);
}
// 解密函数
void aes_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key) {
AES_decrypt(in, out, key);
}
int main() {
const unsigned char key[] = "0123456789abcdef"; // 16 字节的密钥
const unsigned char iv[] = "0123456789abcdef"; // 16 字节的初始化向量
const unsigned char plaintext[] = "Hello, world!"; // 明文
unsigned char ciphertext[16]; // 密文
unsigned char decrypted[16]; // 解密后的明文
AES_KEY aes_key;
AES_set_encrypt_key(key, 128, &aes_key); // 设置加密密钥
// 加密
AES_cbc_encrypt(plaintext, ciphertext, strlen((char*)plaintext), &aes_key, iv, AES_ENCRYPT);
// 输出密文
std::cout << "Ciphertext: ";
for (int i = 0; i < 16; i++) {
std::cout << std::hex << (int)ciphertext[i];
}
std::cout << std::endl;
AES_set_decrypt_key(key, 128, &aes_key); // 设置解密密钥
// 解密
AES_cbc_encrypt(ciphertext, decrypted, strlen((char*)ciphertext), &aes_key, iv, AES_DECRYPT);
// 输出解密后的明文
std::cout << "Decrypted: " << decrypted << std::endl;
return 0;
}
```
需要注意的是,AES 加密算法要求密钥长度为 128 位,也就是 16 字节。IV(初始化向量)也需要是 16 字节。在上面的示例中,我们使用了 CBC 模式进行加密和解密。