Contents 

QuickCrypt Library
QuickCrypt Library Overview
QuickCrypt Library Installation
Register QuickCrypt Library
DES
CDES ( C++ Interface )
CDES Class Members
DES API ( QuickCrypt API )
DES API Functions
DES-EDE2
CDES_EDE2 ( C++ Interface )
CDES_EDE2 Class Members
DES-EDE2 API ( QuickCrypt API )
DES-EDE2 API Functions
DES-EDE3
CDES_EDE3 ( C++ Interface )
CDES_EDE3 Class Members
DES-EDE3 API ( QuickCrypt API )
DES-EDE3 API Functions
DESX
CDESX ( C++ Interface )
CDESX Class Members
DESX API ( QuickCrypt API )
DESX API Functions
Rijndael (AES)
CRijndael ( C++ Interface )
CRijndael Class Members
Rijndael (AES) API ( QuickCrypt API )
Rijndael (AES) API Functions
Blowfish
CBlowfish ( C++ Interface )
CBlowfish Class Members
Blowfish API ( QuickCrypt API )
Blowfish API Functions
GOST
CGOST ( C++ Interface )
CGOST Class Members
GOST API ( QuickCrypt API )
GOST API Functions
ECB Mode
C++ Interface
QuickCrypt API
CBC Mode
CCBCMode ( C++ Interface )
CCBCMode Class Members
CBC Mode API ( QuickCrypt API )
CBC Mode API Functions
CFB Mode
CCFBMode ( C++ Interface )
CCFBMode Class Members
CFB Mode API ( QuickCrypt API )
CFB Mode API Functions
OFB Mode
COFBMode ( C++ Interface )
COFBMode Class Members
OFB Mode API ( QuickCrypt API )
OFB Mode API Functions
CTR Mode
CCounterMode ( C++ Interface )
CCounterMode Class Members
CTR Mode API ( QuickCrypt API )
CTR Mode API Functions
QuickCrypt Library Run-Time Dynamic Linking
License Agreement
Samples

SlavaSoft QuickCrypt Library Online Help

Prev Page Next Page
QuickCrypt Library API

The following sample demonstrates how to use the DES-EDE3 and CTR (Counter mode) API to perform encryption/decryption of a part of memory buffer in Counter mode of operation.

#include <stdio.h>
#include <QuickCrypt.h>

/* performs DES-EDE3 encryption/decryption of of a memory buffer portion in Counter mode  */
void EncryptDecryptBufferPortion( unsigned char* buff, const unsigned int buffsize, const unsigned char* iv, const unsigned char* key )
{
    unsigned char context[ SLC_DES_EDE3_CONTEXTSIZE ];
    unsigned int pos = buffsize / 2;

    /***** Initialize context ***************************************/

    SL_DES_EDE3_Init( context, SLC_ENCRYPT, key, SLC_DES_EDE3_DEFAULTKEYSIZE );
    SL_CTR_Init( context, iv );

    /***** Encrypt/Decrypt the second half of the memory buffer *****/

    SL_CTR_Seek( context, pos );
    SL_CTR_Process( context, buff + pos, buff + pos, buffsize - pos ); /* in-place encryption/decryption */
}

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

int main()
{
    /***** Define key & iv *******************/

    char key[SLC_DES_EDE3_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'
    };

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

    unsigned char buff[] = 
    {
        0xED, 0x39, 0x08, 0x1B, 0xCA, 0xBE, 0x94, 0xCC, 
        0xA2, 0x04, 0x5F, 0x0C, 0x94, 0xCC, 0xAD, 0xE6, 
        0x24, 0xCA, 0xFE, 0x33, 0xF9, 0x8B, 0x29, 0x1F, 
        0x8B, 0xE9, 0x63, 0x1A, 0x96, 0xD9, 0x75, 0xDA
    };

    unsigned int buffsize = sizeof( buff ) / sizeof( unsigned char );

    printf( "Initial memory buffer:\n" );
    ShowBuffer( buff, buffsize );

    /***** Encrypt memory buffer *************/
    
    EncryptDecryptBufferPortion( buff, buffsize, iv, (const unsigned char*)key );

    printf( "Encrypted memory buffer:\n" );
    ShowBuffer( buff, buffsize );

    /***** Decrypt memory buffer *************/

    EncryptDecryptBufferPortion( buff, buffsize, iv, (const unsigned char*)key );

    printf( "Decrypted memory buffer:\n" );
    ShowBuffer( buff, buffsize );

    return 0;
}

void ShowBuffer( const unsigned char* buff, const unsigned int buffsize )
{
    unsigned int i = 0;

    for( ; i < buffsize; ++i )
    {
        printf( "%.2x ", (int)buff[ i ] );

        if( ( i + 1 ) % SLC_DES_EDE3_BLOCKSIZE == 0 )
            printf( "\n" );
    }

    printf( "\n" );
}

 


 

 

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