I found a suscious behaviour, and I have no explanation of that.
Maybe someone can help me to clear this out:
I am doing Symmetric Encryption of a plain text buffer using 2 different methods, and 
the results are different...
Actually the encryption work's well but the decryption does not work.
See the example following:



#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#include "cryptopp/dll.h"
using namespace CryptoPP;
#pragma comment (lib,"cryptoppd")

int main(int argc, char* argv[])
{
        UCHAR plain[] = "test message";
        UCHAR out_plain[sizeof(plain)];
        UCHAR chiper[sizeof(plain)];
        UCHAR chiper2[sizeof(plain)];
        UCHAR key[DES::DEFAULT_KEYLENGTH];
        UCHAR iv[DES::BLOCKSIZE];
        unsigned bSize = strlen((char*)plain);

        srand(time(0));
        for(int i=0;i<DES::DEFAULT_KEYLENGTH;i++)
                key[i] = rand()%256;
        for(i=0;i<DES::BLOCKSIZE;i++)
                iv[i] = rand()%256;


{ //THIS PART RUN'S FINE!!! DES::Encryption desEncryption(key, DES::DEFAULT_KEYLENGTH); CFB_Mode_ExternalCipher::Encryption cfbEncryption(desEncryption, iv); DES::Encryption desDecryption(key, DES::DEFAULT_KEYLENGTH); CFB_Mode_ExternalCipher::Decryption cfbDecryption(desDecryption, iv); cfbEncryption.ProcessData(chiper, plain,bSize); cfbDecryption.ProcessData(out_plain, chiper,bSize); } { //THIS PART DOES NOT WORK!!! //even if it should be the same as previous... :( //encrypt work's ok the chiper and chiper2 is equal, but the out_plain is different!

                DES::Encryption *chpEnc = new DES::Encryption(key, 
DES::DEFAULT_KEYLENGTH);
                CFB_Mode_ExternalCipher::Encryption *cfbEncrypt
                        = new CFB_Mode_ExternalCipher::Encryption(*chpEnc, iv);
                DES::Decryption *chpDec = new DES::Decryption(key, 
DES::DEFAULT_KEYLENGTH);
                CFB_Mode_ExternalCipher::Decryption *cfbDecrypt
                        = new CFB_Mode_ExternalCipher::Decryption(*chpDec, iv);
                
                cfbEncrypt->ProcessData(chiper2, plain, bSize);
                cfbDecrypt->ProcessData(out_plain, chiper2, bSize);
                delete cfbEncrypt;
                delete cfbDecrypt;
                delete chpEnc;
                delete chpDec;
        }
                

        return 0;
}




Reply via email to