45 lines
1.0 KiB
C
45 lines
1.0 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include <openssl/evp.h>
|
|
|
|
|
|
#define ENCRYPT 1
|
|
#define DECRYPT 0
|
|
|
|
int main()
|
|
{
|
|
|
|
|
|
unsigned char key[] = "0123456789ABCDEF";
|
|
unsigned char iv[] = "1111111111111111";
|
|
|
|
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
|
|
EVP_CipherInit(ctx,EVP_aes_128_cbc(), key, iv, ENCRYPT);
|
|
//This disable the padding
|
|
EVP_CIPHER_CTX_set_padding(ctx, 0);
|
|
|
|
unsigned char plaintext[] = "This is the plaintext to encrypt."; //len 33
|
|
unsigned char ciphertext[48];
|
|
|
|
int update_len, final_len;
|
|
int ciphertext_len=0;
|
|
|
|
EVP_CipherUpdate(ctx,ciphertext,&update_len,plaintext,strlen(plaintext));
|
|
ciphertext_len+=update_len;
|
|
printf("update size: %d\n",ciphertext_len);
|
|
|
|
EVP_CipherFinal_ex(ctx,ciphertext+ciphertext_len,&final_len);
|
|
ciphertext_len+=final_len;
|
|
|
|
EVP_CIPHER_CTX_free(ctx);
|
|
|
|
printf("Ciphertext lenght = %d\n", ciphertext_len);
|
|
for(int i = 0; i < ciphertext_len; i++)
|
|
printf("%02x", ciphertext[i]);
|
|
printf("\n");
|
|
|
|
return 0;
|
|
}
|
|
|