Thanks Francesco, Anand for the tip. I guess I need to supply the iv in hex format. Is it as simple as replacing each ascii character of iv string with the equivalent hex value or something else ?
I use the passphrase "As different as chalk and cheese" and iv "As dark as pitch". What would my iv be in the format Openssl expects it to be ? Thanks again, Kunal On Tue, May 25, 2010 at 6:32 PM, Anand Patel <anand.apa...@gmail.com> wrote: > You need to use same iv and key for decryption. > I believe the command is > openssl enc -d -aes-256-cbc -K <key used to encrypt> -iv <iv used to > encrypt> -in rgconf_encrypted -out rgconf_decrypted. > > -Anand > > > On Tue, May 25, 2010 at 8:30 AM, ~ Kunal Sharma ~ <koolku...@gmail.com>wrote: > >> Friends, >> >> I'm trying to verify that my encryption and decryption routines work ok. >> One way I do it is to encrypt the data and save it to a file. The I feed the >> encrypted file to my decryption routine and write the decrypted data to >> another file. I compare the original data and the contents of the decrypted >> file and they are same. So the routines work fine in tandem. >> >> Another method I want to use it to encrypt the data and save it to a file. >> Then I feed the encrypted file to Openssl command line to decrypt. >> >> I get my encrypted data in the file rgconf_encrypted. Then I run the >> following command: >> >> openssl enc -d -aes-256-cbc -in rgconf_encrypted >> >> I enter the decryption password "As different as chalk and cheese" which I >> used to encrypt the data. But I get the error "bad magic number". >> >> Am I missing something here ? I need to be able to use a simple phrase as >> my encryption password so I can decrypt it on command line as well. Please >> provide any pointers on what could be wrong here. >> >> Below is the code for my encryption routine. >> >> Thanks, >> Kunal >> >> ++++++++++++++++++++++++++++++++++++++++++ >> int encrypt(void) >> { >> EVP_CIPHER_CTX ctx; >> unsigned char ibuf[1024],obuf[1024]; >> int rfd, wfd,ilen,olen,tlen; >> >> unsigned char key32[] = "As different as chalk and cheese"; >> unsigned char iv[] = "As dark as pitch"; >> EVP_CIPHER_CTX_init(&ctx); >> if(!EVP_CipherInit_ex(&ctx, EVP_aes_256_cbc(),NULL,key32, >> iv,AES_ENCRYPT) ) { >> console_printf("Couldnt initialize cipher\n"); >> return 1; >> } >> /* read the original contents that are stored in file /etc/rgconf */ >> if((rfd = open("/etc/rgconf",O_RDONLY) ) == -1) { >> console_printf("Couldnt open input file\n"); >> return 1; >> } >> >> /* open a file /et.rgconf_encrypted to store encrypted data */ >> if((wfd = creat("/etc/rgconf_encrypted",0644) ) == -1) { >> console_printf("Couldn't open output file for writing\n"); >> return 1; >> } >> while((ilen = read(rfd,ibuf,1024) ) > 0) { >> if(EVP_CipherUpdate(&ctx,obuf,&olen,ibuf,ilen)){ >> write(wfd,obuf,olen); >> } >> else { >> console_printf("Encryption error\n"); >> return 1; >> } >> } >> if(!EVP_CipherFinal_ex(&ctx,obuf+olen,&tlen)) { >> console_printf("Trouble with padding the last block\n"); >> return 1; >> } >> >> write(wfd,obuf+olen,tlen); >> EVP_CIPHER_CTX_cleanup(&ctx); >> close(rfd); >> close(wfd); >> console_printf("AES 256 CBC encryption complete\n"); >> return 0; >> } >> ++++++++++++++++++++++++++++++++++++++++++ >> >> >> >> >> >