Try this: http://www.grandville.net/pmwiki.php/OpenSSL/AES-CBC-EVP

Openssl  EVP API makes AES encryption/decryption.

On Mon, May 26, 2008 at 5:54 PM, Mohamed Amine Ourmech <[EMAIL PROTECTED]>
wrote:

>   Good morning,
> I want to test the AES CTR128 encryption of openSSL but infortunately i
> could not find one. I have tested one but still i got errors in the output
> of the program. here is the code i tested (i found it on the internet), plz
> can anyone provide a really simple test program for the counter mode of AES
> in openSSL, or simply see what s the problem in that source code. Thank you
> very much for consideration.
>
> #include <stdio.h>
> #include <string.h>
> #include < openssl
> <http://osdir.com/ml/encryption.openssl.devel/2002-07/msg00358.html#>/aes.h>
>
>
> #define KEY_LENGTH 16
> #define TEXT_LENGTH 36
> #define COUNTER_LENGTH 16
>
> void mirror(const unsigned char *in, unsigned char *out,
>             const unsigned long length, const AES_KEY *key,
>             unsigned char *counter, unsigned int *num) {
>
>         unsigned int n;
>         unsigned long l=length;
>         unsigned char tmp[AES_BLOCK_SIZE];
>
>         memset(tmp, 0xFF, AES_BLOCK_SIZE);
> }
>
> int main(void)
> {
>         unsigned char key[KEY_LENGTH + 1] = "9dfe5ea4c3f84ae3";
>         unsigned char plaintext1[(TEXT_LENGTH / 2) + 1] =
> "123456789012345678";
>         unsigned char plaintext2[(TEXT_LENGTH / 2) + 1] =
> "876543210987654321";
>         unsigned char ciphertext[TEXT_LENGTH + 1];
>         unsigned char plaintext[TEXT_LENGTH + 1];
>         unsigned char ecounter[COUNTER_LENGTH + 1] = "6543210987654321";
>         unsigned char dcounter[COUNTER_LENGTH + 1] = "6543210987654321";
>         AES_KEY k;
>         int num;
>         int retval;
>
>
>         retval = AES_set_encrypt_key(key, strlen(key) * 8, &k);
>         if (retval < 0) {
>                 printf("couldn't set encrypt key: %d\n", retval);
>                 return -1;
>         }
>
>         num = 0;
>         AES_ctr128_encrypt(plaintext1, ciphertext, strlen(plaintext1),
>                            &k, ecounter, &num);
>
>         mirror(NULL, NULL, 0, NULL, NULL, NULL);
>
>         AES_ctr128_encrypt(plaintext2, ciphertext + strlen(plaintext1),
>                            strlen(plaintext2), &k, ecounter, &num);
>
>         num = 0;
>         AES_ctr128_encrypt(ciphertext, plaintext,
>                            strlen(plaintext1) + strlen(plaintext2),
>                            &k, dcounter, &num);
>
>         retval = strncmp(plaintext, plaintext1, strlen(plaintext1));
>         if (retval != 0) {
>                 printf("error\n");
>                 return -1;
>         }
>         retval = strncmp(plaintext + strlen(plaintext1), plaintext2,
>                          strlen(plaintext2));
>         if (retval != 0) {
>                 printf("error\n");
>                 return -1;
>         }
>
>         printf("success\n");
>
>         return 0;
> }
>
>


-- 
Karim

Reply via email to