http://fixunix.com/openssl/249591-evp_decryptfinal_ex-bad-decrypt.html
On Tue, May 27, 2008 at 10:58 AM, karim Bendadda <[EMAIL PROTECTED]> wrote: > 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 -- Karim