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; } ++++++++++++++++++++++++++++++++++++++++++