Greetings, users.
I am having a strange problem decrypting a file that I used openssl to
encrypt via the following:
openssl enc -bf -in nfoz.tar.gz -out nfoz.tar.gz.bf
If I attempt to decrypt with the following:
openssl enc -d -bf -in nfoz.tar.gz.bf -out nfoz.tar.gz
I get the following message if I type anything but the correct passphrase:
46462:error:06065064:digital envelope routines:EVP_DecryptFinal:bad
decrypt:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:450:
If I type the correct passphrase, I get this error message:
46489:error:06065064:digital envelope routines:EVP_DecryptFinal:bad
decrypt:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:457:
The line numbers (450 and 457) always seem to be 7 lines apart, depending on
the version of openssl I attempt to decrypt the file with.
The file is -rw-r--r-- 1 phiz www 37081488 May 17 19:01 nfoz.tar.gz.bf
The code in question appears to be this:
if (b > 1)
{
if (ctx->buf_len || !ctx->final_used)
{
EVPerr(EVP_F_EVP_DECRYPTFINAL_EX,EVP_R_WRONG_FINAL_BLOCK_LENGTH);
return(0);
}
OPENSSL_assert(b <= sizeof ctx->final);
n=ctx->final[b-1];
if (n == 0 || n > (int)b)
{
EVPerr(EVP_F_EVP_DECRYPTFINAL_EX,EVP_R_BAD_DECRYPT);
return(0);
}
for (i=0; i<n; i++)
{
if (ctx->final[--b] != n)
{
EVPerr(EVP_F_EVP_DECRYPTFINAL_EX,EVP_R_BAD_DECRYPT);
return(0);
}
}
n=ctx->cipher->block_size-n;
for (i=0; i<n; i++)
out[i]=ctx->final[i];
*outl=n;
}
else
*outl=0;
return(1);
}
I am stumped, (and an idiot for not having a good backup). Any help would
be very appreciated.
Thanks in advance,
Chris