In other words, this is a user error.  This ticket is now resolved.

[[EMAIL PROTECTED] - Sat Feb 15 01:53:26 2003]:

> In message <[EMAIL PROTECTED]> on Fri, 14 Feb
> 2003 21:18:45 +0100 (MET), " via RT" <[EMAIL PROTECTED]> said:
> 
> rt>
> rt> Hi,
> rt>
> rt> I'm using the latest (0.9.7) Crypto lib to encrypt a string of
> clear
> rt> text, by using CBC mode with IV preset to 8 bytes of 0x00.
> rt> When the encrypted text was decrypted back to plain text, the
> first 8
> rt> bytes are bad text.  I believe there are something to do with the
> IV
> rt> parameter, or I call the functions incorrectly.  Please help!!
> rt>
> rt> Here are the source code and the output:
> rt> =============================================
> rt>
> rt> #include <iostream.h>
> rt> #include <stdio.h>
> rt> #include <openssl/des.h>
> rt>
> rt> #include "HubUtil.h"
> rt>
> rt> int main() {
> rt>
> rt>   char mKey[8];
> rt>   mKey[0] = 0xb1;
> rt>   mKey[1] = 0xa5;
> rt>   mKey[2] = 0x38;
> rt>   mKey[3] = 0x58;
> rt>   mKey[4] = 0xb2;
> rt>   mKey[5] = 0x60;
> rt>   mKey[6] = 0xd7;
> rt>   mKey[7] = 0x38;
> rt>
> rt>   char myIV[8];
> rt>   myIV[0] = 0x00;
> rt>   myIV[1] = 0x00;
> rt>   myIV[2] = 0x00;
> rt>   myIV[3] = 0x00;
> rt>   myIV[4] = 0x00;
> rt>   myIV[5] = 0x00;
> rt>   myIV[6] = 0x00;
> rt>   myIV[7] = 0x00;
> rt>
> rt>   DES_cblock cbKey;
> rt>   DES_cblock cbIV;
> rt>   DES_key_schedule kSchedule;
> rt>
> rt>   char inS[] = "Hello c++ World!!!!";
> rt>   unsigned char input[19];
> rt>
> rt>   int i;
> rt>   for(i=0; i<strlen(inS); i++) {
> rt>     input[i] = (unsigned) inS[i];
> rt>   }
> rt>
> rt>   char inHex[39];
> rt>   HubUtil::bytesToHex(input, inHex, 19);
> rt>
> rt>   cout << "Input hex: " << inHex << endl;
> rt>
> rt>   unsigned char output[24];
> rt>
> rt>   DES_string_to_key(mKey, &cbKey);
> rt>   DES_string_to_key(myIV, &cbIV);
> rt>   DES_set_key_unchecked(&cbKey, &kSchedule);
> rt>   DES_ncbc_encrypt(input, output, 19, &kSchedule, &cbIV, 1);
> rt>
> rt>   cout << "In : " << input << endl;
> rt>
> You need to do this here:
> 
>       DES_string_to_key(myIV, &cbIV);
> 
> rt>   unsigned char output2[19];
> rt>   DES_ncbc_encrypt(output, output2, 24, &kSchedule, &cbIV, 0);
> rt>
> rt>   char outHex[39];
> rt>   HubUtil::bytesToHex(output2, outHex, 19);
> rt>
> rt>   cout << "Decrypted hex: " << outHex << endl;
> rt>
> rt>   return 0;
> 
> 
> You problem was that you didn't reinitialise the IV.


-- 
Richard Levitte
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to