在C语言中实现AES加密
要在C语言里实现AES加密,一个比较成熟的做法是借助现成的开源库,比如OpenSSL。它封装好了那些复杂的底层操作,咱们直接调用就行。下面这段示例代码,就展示了怎么用OpenSSL库来完成一次基本的AES加密过程。

#include
#include
#include
// 加密函数
int aes_encrypt(const unsigned char *plaintext, int plaintext_len, const unsigned char *key, const unsigned char *iv, unsigned char *ciphertext) {
AES_KEY enc_key;
if (AES_set_encrypt_key(key, 128, &enc_key) < 0) {
fprintf(stderr, "AES_set_encrypt_key failed\n");
return -1;
}
AES_cbc_encrypt(plaintext, ciphertext, plaintext_len, &enc_key, iv, AES_ENCRYPT);
return 0;
}
int main() {
unsigned char key[] = "0123456789abcdef"; // 128位密钥
unsigned char iv[] = "0123456789abcdef"; // 初始向量
unsigned char plaintext[] = "Hello, World!";
unsigned char ciphertext[128];
int plaintext_len = strlen(plaintext);
aes_encrypt(plaintext, plaintext_len, key, iv, ciphertext);
printf("Ciphertext: %s\n", ciphertext);
return 0;
}
这段代码的核心,是使用了AES加密中比较常见的CBC模式。这里有个细节需要注意:密钥和初始向量的长度,必须严格符合加密算法的要求。示例里为了演示方便,直接用了128位的密钥和初始向量。
当然,想跑通这段代码,你得先把OpenSSL库的环境准备好。安装好库之后,编译的时候记得把它链接上。通常可以像下面这样用gcc命令来编译:
gcc -o aes_encrypt aes_encrypt.c -lcrypto
编译成功,生成可执行文件,就能直接运行并看到AES加密的结果了。
