Hi,

 I have a problem with the code below. There is a bug that I can't find and 
fix. 
This is the output when I try to run it:

[root@localhost test]# ./a.out sdcsdsdcd
Entering Encryption Stage:

String to encrypt: sdcsdsdcd

Encryption Successful

Entering Decryption Stage

Error Whilst DecryptFinal
19041:error:06065064:lib(6):func(101):reason(100):evp_enc.c:325:


Here is the source code:



#include  
#include  
#include  
#include  
#include  

#define input_buf_size 1024
#define output_buf_size 1032

int main(int argc, char *argv[])
{








 if (argc !=2)







 {















 printf("Usage: test1  \n");















 exit(1);







 }






 







 char *string;








 int encoutlen, decoutlen, enctotallen, dectotallen;








 unsigned char iv[8];







 unsigned char
 password[16];







 unsigned char enc_outbuf[output_buf_size];







 char enc_inbuf[input_buf_size];







 unsigned char dec_outbuf[input_buf_size];







 char dec_inbuf[output_buf_size];







 EVP_CIPHER_CTX ectx;







 EVP_CIPHER_CTX dctx;








 /*








 * Begin the encode - decode








 *








 * Get our inputs and the random IV








 *








 */








 string = argv[1];








 RAND_bytes(iv, 8);







 RAND_bytes(password, 16);








 printf("Entering Encryption Stage:\n\n");







 printf("String to encrypt: %s\n\n", string);








 EVP_CIPHER_CTX_init(&ectx);









 EVP_EncryptInit(&ectx, EVP_bf_cbc(), password, iv);








 bzero (&enc_inbuf, input_buf_size);








 if(!EVP_EncryptUpdate(&ectx, enc_outbuf, &encoutlen, string, 
strlen(string)))







 {















 printf("Error whilst EncryptUpdate\n");















 return 0;







 }








 if(!EVP_EncryptFinal(&ectx, enc_outbuf + encoutlen, &enctotallen))







 {















 printf("Error Whilst EncryptFinal\n");















 return 0;







 }








 encoutlen += enctotallen;








 printf("Encryption Successful\n\n");







 printf("Entering Decryption Stage\n\n");








 EVP_CIPHER_CTX_init(&dctx);







 EVP_DecryptInit(&dctx, EVP_bf_cbc(), password, iv);








 bzero (&dec_inbuf, output_buf_size);







 bzero (&dec_outbuf, input_buf_size);








 if (!(EVP_DecryptUpdate(&dctx, dec_outbuf, &decoutlen, enc_outbuf, 
output_buf_size)))







 {















 printf("Error Whilst DecryptUpdate\n");















 return 0;







 }








 if (!(EVP_DecryptFinal(&dctx, dec_outbuf + decoutlen, &dectotallen)))







 {















 printf("Error Whilst DecryptFinal\n");















 ERR_print_errors_fp(stdout);















 return 0;







 }








 decoutlen += dectotallen;








 printf("Decryption Successful\n\n");








 printf("Decrypted String is: %s\n", dec_outbuf);








 return 0;

} 

Any help will be highly appreciated!

Regards
Peter

Reply via email to