aes加密解密(c语言)
时间: 2023-11-17 15:03:13 浏览: 149
AES加密解密是一种常用的对称加密算法,它使用相同的密钥来进行加密和解密操作。
在C语言中,可以使用OpenSSL库来实现AES加密解密功能。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <openssl/aes.h>
// 加密函数
void aes_encrypt(const unsigned char *plaintext, unsigned char *ciphertext, const unsigned char *key) {
AES_KEY aes_key;
AES_set_encrypt_key(key, 128, &aes_key);
AES_encrypt(plaintext, ciphertext, &aes_key);
}
// 解密函数
void aes_decrypt(const unsigned char *ciphertext, unsigned char *plaintext, const unsigned char *key) {
AES_KEY aes_key;
AES_set_decrypt_key(key, 128, &aes_key);
AES_decrypt(ciphertext, plaintext, &aes_key);
}
int main() {
// 原始数据
unsigned char plaintext[] = "Hello, AES!";
// 密钥
unsigned char key[] = "0123456789ABCDEF";
// 加密后的数据
unsigned char ciphertext[AES_BLOCK_SIZE];
// 解密后的数据
unsigned char decrypted_text[AES_BLOCK_SIZE];
// 加密
aes_encrypt(plaintext, ciphertext, key);
// 解密
aes_decrypt(ciphertext, decrypted_text, key);
printf("原始数据:%s\n", plaintext);
printf("加密后的数据:");
for (int i = 0; i < AES_BLOCK_SIZE; i++) {
printf("%02X ", ciphertext[i]);
}
printf("\n解密后的数据:%s\n", decrypted_text);
return 0;
}
```
以上代码中,我们使用了OpenSSL库中的AES_set_encrypt_key和AES_set_decrypt_key函数来设置加密解密所使用的密钥。然后,通过AES_encrypt和AES_decrypt函数进行实际的加密解密操作。最后,我们将原始数据、加密后的数据和解密后的数据打印出来。
需要注意的是,AES加密算法要求密钥长度为128位(16个字节),并且加密的数据长度需要是分组大小(16字节)的整数倍。
阅读全文