最近需要用到AES加密,为了图方便就打算使用openssl自带的AES加密算法的API来实现。
主要用到了ECB和CBC两种加密模式。
ECB模式之前一篇已经写过了。这篇就写一下CBC模式。
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <openssl/aes.h>
void my_AES_cbc_encrypt(unsigned char *in, unsigned char *out,
size_t len, const void *key,
unsigned char *ivec)
{
size_t n;
const unsigned char *iv = ivec;
if (len == 0)
return;
while (len) {
for (n = 0; n < 16 && n < len; ++n)
out[n] = in[n] ^ iv[n];