QuickCrypt Library C++ Interface

The following sample demonstrates how to use the CBlowfish and CCBCMode classes to perform encryption/decryption of a memory buffer in CBC mode of operation.

#include <iostream>
#include <QuickCrypt.h>

using namespace std;
using namespace QuickCrypt;

// performs Blowfish encryption/decryption of memory buffer in CBC mode
int EncryptDecryptBuffer( unsigned char* buff, const unsigned int buffsize, SL_CIPHER_DIR dir, const unsigned char* iv, const unsigned char* key )
{
    //dir: SLC_ENCRYPT - perform encryption
    //     SLC_DECRYPT - perform decryption

    //Instantiate CCBCMode object

    CCBCMode<CBlowfish> cipher( dir, iv, key );

    //Encrypt/Decrypt memory buffer
   
    return cipher.Process( buff, buff, buffsize ); //in-place encryption/decryption
}

void ShowBuffer( const unsigned char* buff, const unsigned int buffsize );

int main()
{
    //Define key, iv, memory buffer

    char key[CBlowfish::DEFAULTKEYSIZE] = 
    {
        's', 'e', 'c', 'r', 'e', 't', 'l', 'y',
        '9', '6', '7', '1', '2', '9', '2', '7',
        '0', '1', '2', '2', '0', '0', '5', '7',
        '*', '-', '*', '-', '*', '-', '*', '-',
        '9', '6', '7', '1', '2', '9', '2', '7',
        '0', '1', '2', '2', '0', '0', '5', '7',
        '*', '-', '*', '-', '*', '-', '*', '-'
    };

    unsigned char iv[CBlowfish::BLOCKSIZE] = 
    {
        0x41, 0x3E, 0xF0, 0xA1, 0xC6, 0x11, 0xE5, 0x50
    };

    unsigned char buff[100] = 
    {
        0xA0, 0x76, 0xEE, 0x97, 0x8F, 0x12, 0x2C, 0x6F, 
        0xAA, 0x86, 0xC8, 0x13, 0x80, 0x80, 0xEA, 0xC4, 
        0x6B, 0xF0, 0x0D, 0x4A, 0x6A, 0xE7, 0x6E, 0x09, 
        0x12, 0x8B, 0xFE
    };

    unsigned int buffsize = 27;

    cout.setf( ios::hex, ios::basefield );
    cout << "Initial memory buffer:" << endl;
    ShowBuffer( buff, buffsize );


    //Encrypt memory buffer

    buffsize = EncryptDecryptBuffer( buff, buffsize, SLC_ENCRYPT, iv, (const unsigned char*)key );
    
    cout << "Encrypted memory buffer:" << endl;
    ShowBuffer( buff, buffsize );

    //Decrypt memory buffer

    buffsize = EncryptDecryptBuffer( buff, buffsize, SLC_DECRYPT, iv, (const unsigned char*)key );

    cout << "Decrypted memory buffer:" << endl;
    ShowBuffer( buff, buffsize );

    return 0;
}

void ShowBuffer( const unsigned char* buff, const unsigned int buffsize )
{
    for( int i = 0; i < buffsize; ++i )
    {
        cout.fill( '0' );
        cout.width( 2 );

        cout << (int)buff[ i ] << " ";

        if( ( i + 1 ) % CBlowfish::BLOCKSIZE == 0 )
            cout << endl;
    }
    cout << endl;
}

 


 

 

Send Feedback to SlavaSoft Inc. Tell a friend about QuickCrypt Library