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   \ Spannvägen 38, II \ [EMAIL PROTECTED]
Redakteur@Stacken  \ S-168 35  BROMMA  \ T: +46-8-26 52 47
                    \      SWEDEN       \ or +46-708-26 53 44
Procurator Odiosus Ex Infernis                -- [EMAIL PROTECTED]
Member of the OpenSSL development team: http://www.openssl.org/

Unsolicited commercial email is subject to an archival fee of $400.
See <http://www.stacken.kth.se/~levitte/mail/> for more info.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to