对字符串进行aes加密的c语言程序
时间: 2024-11-27 09:14:30 浏览: 0
openssl命令和C语言实现字符串AES对称加密功能
在C语言中对字符串进行AES加密通常需要利用第三方库,如OpenSSL或者wolfSSL等,因为标准C库并不包含AES加密算法。下面是一个简单的示例,使用OpenSSL库来实现AES-128-CBC模式的字符串加密:
```c
#include <stdio.h>
#include <string.h>
#include <openssl/aes.h>
// AES 加密函数
void aes_encrypt(const char *key, const unsigned char iv[], char *input, char *output) {
AES_KEY aes_key;
AES_set_encrypt_key((const unsigned char *) key, 128, &aes_key); // 128位密钥
int len = strlen(input);
unsigned char crypted[len + AES_BLOCK_SIZE]; // 加上填充后的长度
memset(crypted, 0, sizeof(crypted)); // 初始化到0防止未初始化的内存影响结果
AES_cbc_encrypt((unsigned char *) input, crypted, len, &aes_key, (unsigned char *) iv, AES_ENCRYPT); // 加密
// 输出加密后的数据
memcpy(output, crypted, len + AES_BLOCK_SIZE);
}
int main() {
const char *key = "your_secret_key_16_bytes"; // 16字节AES密钥
char iv[AES_BLOCK_SIZE] = {0}; // 初始化向量,一般需要随机生成
char plaintext[] = "Hello, World!";
char ciphertext[AES_BLOCK_SIZE * 2]; // 确保有足够的空间存储加密结果
aes_encrypt(key, iv, plaintext, ciphertext);
printf("Original String: %s\n", plaintext);
printf("Encrypted String: %s\n", ciphertext);
return 0;
}
```
注意:
1. 这个例子仅作教学用途,实际生产环境中你需要处理好密钥和IV的安全存储以及正确的填充方式(例如PKCS7)。
2. 使用OpenSSL需要先安装并在编译选项中链接相应的库。
阅读全文