aes算法c语言
时间: 2023-07-26 08:11:02 浏览: 96
AES是一种对称加密算法,可以使用C语言实现。以下是一个简单的AES加解密实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <openssl/aes.h>
int main()
{
AES_KEY key;
uint8_t iv[AES_BLOCK_SIZE];
uint8_t plaintext[128];
uint8_t ciphertext[128];
uint8_t decryptedtext[128];
char *key_data = "my_secret_key";
char *input_data = "hello world";
int input_len = strlen(input_data);
// 初始化iv和key
memset(iv, 0x00, AES_BLOCK_SIZE);
memset(plaintext, 0x00, 128);
memset(ciphertext, 0x00, 128);
memset(decryptedtext, 0x00, 128);
if (AES_set_encrypt_key(key_data, 128, &key) < 0) {
fprintf(stderr, "Unable to set encryption key in AES\n");
exit(1);
}
// 加密
AES_cbc_encrypt(input_data, ciphertext, input_len, &key, iv, AES_ENCRYPT);
printf("Ciphertext: ");
for (int i = 0; i < input_len; ++i) {
printf("%02x", ciphertext[i]);
}
printf("\n");
if (AES_set_decrypt_key(key_data, 128, &key) < 0) {
fprintf(stderr, "Unable to set decryption key in AES\n");
exit(1);
}
// 解密
AES_cbc_encrypt(ciphertext, decryptedtext, input_len, &key, iv, AES_DECRYPT);
printf("Decrypted text: %s\n", decryptedtext);
return 0;
}
```
需要注意的是,该示例使用了OpenSSL库实现AES算法,因此需要链接该库。可以使用以下命令编译该程序:
```
gcc -o aes aes.c -lcrypto
```
阅读全文