Deriving key and iv for openssl AES decryptionreplicating openssl encryption in .NET?How to create a self-signed certificate with OpenSSLOpenSSL: error occuring in EVP_DecryptFinal_exOpenSSL: bad decrypt 3872:error:0607F08AEncrypt in C# using OpenSSL compatible format, decrypt in PocoPadding errors using OpenSSL for encrypt/decrypt with Keys extracted from Digital CertOpenssl AES 256 CBC Java Decrypt File with saltJava decryption of an encrypted file with openssl aes 256 cbcHow to detect wrong key used to decrypt openssl rc2-64-cbc nopadDecrypting using openssl c/c++ API fails
Is all-caps blackletter no longer taboo?
Fastest way from 10 to 1 with everyone in between
I received a gift from my sister who just got back from
My parents claim they cannot pay for my college education; what are my options?
ISP is not hashing the password I log in with online. Should I take any action?
Has JSON.serialize suppressApexObjectNulls ever worked?
ifnum expanding too much - what is happening?
Why does this Apple //e drops into system monitor when booting?
How effective would a full set of plate armor be against wild animals found in temperate regions (bears, snakes, wolves)?
How can I find out about the game world without meta-influencing it?
Short story about psychologist analyzing demon
Why is my Taiyaki (Cake that looks like a fish) too hard and dry?
What is the theme of analysis?
What does the "titan" monster tag mean?
Opposite of "Concerto Grosso"?
Someone who is granted access to information but not expected to read it
Is it ethical to cite a reviewer's papers even if they are rather irrelevant?
Can Mage Hand be used to indirectly trigger an attack?
Why are backslashes included in this shell script?
What publication claimed that Michael Jackson died in a nuclear holocaust?
How to search for Android apps without ads?
New Site Design!
Is there a term for someone whose preferred policies are a mix of Left and Right?
Why is it bad to use your whole foot in rock climbing
Deriving key and iv for openssl AES decryption
replicating openssl encryption in .NET?How to create a self-signed certificate with OpenSSLOpenSSL: error occuring in EVP_DecryptFinal_exOpenSSL: bad decrypt 3872:error:0607F08AEncrypt in C# using OpenSSL compatible format, decrypt in PocoPadding errors using OpenSSL for encrypt/decrypt with Keys extracted from Digital CertOpenssl AES 256 CBC Java Decrypt File with saltJava decryption of an encrypted file with openssl aes 256 cbcHow to detect wrong key used to decrypt openssl rc2-64-cbc nopadDecrypting using openssl c/c++ API fails
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I am trying AES decrypt operation using openssl functions from C code, but it is failing.
Using openssl command line tools I can decrypt the blob successfully.
openssl enc -d -p -aes-256-cbc -md md5 -in encrypted_file -out clear_file -pass file:./key_file -v
The above command works fine.
But when I use openssl C functions to do the same it fails. The failure seems to be related to wrong key and iv derived from passwd and salt.
unsigned char key[32];
unsigned char iv[16];
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, key_size, 1, key, iv);
[key_file_buf is an unsigned char buffer read from key_file.]
Hexdump of salt and key_file_buf matches with what is used in command line. Size is also correct.(45 bytes in my case.)
What could be going wrong with EVP_BytesToKey() usage to return wrong key and iv?
I've tried experimenting with iter count values, but none seems to generate the working key and iv. I assume the command line default iter count is 1 anyway.
Also confirmed, if I overwrite what is returned from EVP_BytesToKey() and hard code unsigned char arrays with the working key and iv shown from command line rest of my code works fine and decrypts correctly.
For info, this is how rest of the code looks like (copied from different sources, examples on the web)
EVP_CIPHER_CTX_new();
if(ctx == NULL)
printf("Error with EVP_CIPHER_CTX_new.n");
return;
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
printf("Error initialising decrypted data.n");
return;
if(1 != EVP_DecryptUpdate(ctx, clear_data, (int *)&interm_len, &enc_data[salt_size], enc_size))
printf("Error decrypting data.n");
return;
*clear_size = interm_len;
if(1 != EVP_DecryptFinal_ex(ctx, clear_data + interm_len, (int *)&interm_len))
printf("Error decrypting data.n");
return;
*clear_size += interm_len;
EVP_CIPHER_CTX_free(ctx);
Can anyone please help?
c openssl
add a comment |
I am trying AES decrypt operation using openssl functions from C code, but it is failing.
Using openssl command line tools I can decrypt the blob successfully.
openssl enc -d -p -aes-256-cbc -md md5 -in encrypted_file -out clear_file -pass file:./key_file -v
The above command works fine.
But when I use openssl C functions to do the same it fails. The failure seems to be related to wrong key and iv derived from passwd and salt.
unsigned char key[32];
unsigned char iv[16];
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, key_size, 1, key, iv);
[key_file_buf is an unsigned char buffer read from key_file.]
Hexdump of salt and key_file_buf matches with what is used in command line. Size is also correct.(45 bytes in my case.)
What could be going wrong with EVP_BytesToKey() usage to return wrong key and iv?
I've tried experimenting with iter count values, but none seems to generate the working key and iv. I assume the command line default iter count is 1 anyway.
Also confirmed, if I overwrite what is returned from EVP_BytesToKey() and hard code unsigned char arrays with the working key and iv shown from command line rest of my code works fine and decrypts correctly.
For info, this is how rest of the code looks like (copied from different sources, examples on the web)
EVP_CIPHER_CTX_new();
if(ctx == NULL)
printf("Error with EVP_CIPHER_CTX_new.n");
return;
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
printf("Error initialising decrypted data.n");
return;
if(1 != EVP_DecryptUpdate(ctx, clear_data, (int *)&interm_len, &enc_data[salt_size], enc_size))
printf("Error decrypting data.n");
return;
*clear_size = interm_len;
if(1 != EVP_DecryptFinal_ex(ctx, clear_data + interm_len, (int *)&interm_len))
printf("Error decrypting data.n");
return;
*clear_size += interm_len;
EVP_CIPHER_CTX_free(ctx);
Can anyone please help?
c openssl
add a comment |
I am trying AES decrypt operation using openssl functions from C code, but it is failing.
Using openssl command line tools I can decrypt the blob successfully.
openssl enc -d -p -aes-256-cbc -md md5 -in encrypted_file -out clear_file -pass file:./key_file -v
The above command works fine.
But when I use openssl C functions to do the same it fails. The failure seems to be related to wrong key and iv derived from passwd and salt.
unsigned char key[32];
unsigned char iv[16];
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, key_size, 1, key, iv);
[key_file_buf is an unsigned char buffer read from key_file.]
Hexdump of salt and key_file_buf matches with what is used in command line. Size is also correct.(45 bytes in my case.)
What could be going wrong with EVP_BytesToKey() usage to return wrong key and iv?
I've tried experimenting with iter count values, but none seems to generate the working key and iv. I assume the command line default iter count is 1 anyway.
Also confirmed, if I overwrite what is returned from EVP_BytesToKey() and hard code unsigned char arrays with the working key and iv shown from command line rest of my code works fine and decrypts correctly.
For info, this is how rest of the code looks like (copied from different sources, examples on the web)
EVP_CIPHER_CTX_new();
if(ctx == NULL)
printf("Error with EVP_CIPHER_CTX_new.n");
return;
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
printf("Error initialising decrypted data.n");
return;
if(1 != EVP_DecryptUpdate(ctx, clear_data, (int *)&interm_len, &enc_data[salt_size], enc_size))
printf("Error decrypting data.n");
return;
*clear_size = interm_len;
if(1 != EVP_DecryptFinal_ex(ctx, clear_data + interm_len, (int *)&interm_len))
printf("Error decrypting data.n");
return;
*clear_size += interm_len;
EVP_CIPHER_CTX_free(ctx);
Can anyone please help?
c openssl
I am trying AES decrypt operation using openssl functions from C code, but it is failing.
Using openssl command line tools I can decrypt the blob successfully.
openssl enc -d -p -aes-256-cbc -md md5 -in encrypted_file -out clear_file -pass file:./key_file -v
The above command works fine.
But when I use openssl C functions to do the same it fails. The failure seems to be related to wrong key and iv derived from passwd and salt.
unsigned char key[32];
unsigned char iv[16];
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, key_size, 1, key, iv);
[key_file_buf is an unsigned char buffer read from key_file.]
Hexdump of salt and key_file_buf matches with what is used in command line. Size is also correct.(45 bytes in my case.)
What could be going wrong with EVP_BytesToKey() usage to return wrong key and iv?
I've tried experimenting with iter count values, but none seems to generate the working key and iv. I assume the command line default iter count is 1 anyway.
Also confirmed, if I overwrite what is returned from EVP_BytesToKey() and hard code unsigned char arrays with the working key and iv shown from command line rest of my code works fine and decrypts correctly.
For info, this is how rest of the code looks like (copied from different sources, examples on the web)
EVP_CIPHER_CTX_new();
if(ctx == NULL)
printf("Error with EVP_CIPHER_CTX_new.n");
return;
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv))
printf("Error initialising decrypted data.n");
return;
if(1 != EVP_DecryptUpdate(ctx, clear_data, (int *)&interm_len, &enc_data[salt_size], enc_size))
printf("Error decrypting data.n");
return;
*clear_size = interm_len;
if(1 != EVP_DecryptFinal_ex(ctx, clear_data + interm_len, (int *)&interm_len))
printf("Error decrypting data.n");
return;
*clear_size += interm_len;
EVP_CIPHER_CTX_free(ctx);
Can anyone please help?
c openssl
c openssl
asked Mar 24 at 9:28
Dev_001Dev_001
12
12
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Figured out finally!
Should have been
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, (key_size-1), 1, key, iv);
As explained in openssl documentation
file:pathname
The first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password.
My passwd file ends in newline 0x0A. So I removed that from the buf for EVP_BytesToKey() and it returns correct key & iv and decrypts fine now.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55322359%2fderiving-key-and-iv-for-openssl-aes-decryption%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Figured out finally!
Should have been
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, (key_size-1), 1, key, iv);
As explained in openssl documentation
file:pathname
The first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password.
My passwd file ends in newline 0x0A. So I removed that from the buf for EVP_BytesToKey() and it returns correct key & iv and decrypts fine now.
add a comment |
Figured out finally!
Should have been
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, (key_size-1), 1, key, iv);
As explained in openssl documentation
file:pathname
The first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password.
My passwd file ends in newline 0x0A. So I removed that from the buf for EVP_BytesToKey() and it returns correct key & iv and decrypts fine now.
add a comment |
Figured out finally!
Should have been
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, (key_size-1), 1, key, iv);
As explained in openssl documentation
file:pathname
The first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password.
My passwd file ends in newline 0x0A. So I removed that from the buf for EVP_BytesToKey() and it returns correct key & iv and decrypts fine now.
Figured out finally!
Should have been
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), salt, key_file_buf, (key_size-1), 1, key, iv);
As explained in openssl documentation
file:pathname
The first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password.
My passwd file ends in newline 0x0A. So I removed that from the buf for EVP_BytesToKey() and it returns correct key & iv and decrypts fine now.
answered Mar 25 at 0:50
Dev_001Dev_001
12
12
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55322359%2fderiving-key-and-iv-for-openssl-aes-decryption%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown