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 API to perform encryption/decryption of a memory buffer in ECB mode of operation.

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

/* performs DES-EDE3 encryption/decryption of memory buffer in ECB mode */
void EncryptDecryptBuffer( unsigned char* buff, const unsigned int numblocks, int dir, const unsigned char* key )
{
    /* dir: SLC_ENCRYPT - perform encryption */
    /*      SLC_DECRYPT - perform decryption */

    unsigned int i = 0;

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

    unsigned char context[SLC_DES_EDE3_CONTEXTSIZE];

    SL_DES_EDE3_Init( context, dir, key, SLC_DES_EDE3_DEFAULTKEYSIZE );

    /***** Encrypt/Decrypt memory buffer ****/
   
    for( ; i < numblocks; ++i )
    {
        SL_DES_EDE3_ProcessBlock( context, buff + i * SLC_DES_EDE3_BLOCKSIZE, buff + i * SLC_DES_EDE3_BLOCKSIZE ); /* in-place encryption/decryption */
    }
}

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

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

    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'
    };

    const unsigned int NUM_BLOCKS = 3;

    unsigned char blocks[24] = /* SLC_DES_EDE3_BLOCKSIZE * NUM_BLOCKS */
    {
        0xA6, 0x7E, 0x40, 0x80, 0x0F, 0xCF, 0x24, 0xC5, 
        0x8C, 0x5B, 0x3C, 0x42, 0xDE, 0xB1, 0x11, 0xA0, 
        0x97, 0xE9, 0xA7, 0x87, 0x99, 0x91, 0x1B, 0x3B
    };

    printf( "Initial blocks:\n" );
    ShowBuffer( blocks, NUM_BLOCKS );

    /***** Encrypt blocks ********************/

    EncryptDecryptBuffer( blocks, NUM_BLOCKS, SLC_ENCRYPT, (const unsigned char*)key );

    printf( "Encrypted blocks:\n" );
    ShowBuffer( blocks, NUM_BLOCKS );

    /***** Decrypt blocks ********************/

    EncryptDecryptBuffer( blocks, NUM_BLOCKS, SLC_DECRYPT, (const unsigned char*)key );

    printf( "Decrypted blocks:\n" );
    ShowBuffer( blocks, NUM_BLOCKS );

    return 0;
}

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

    for( ; i < numblocks; ++i )
    {
        unsigned int j = 0;

        for( ; j < SLC_DES_EDE3_BLOCKSIZE; ++j )
        {
            printf( "%.2x ", (int)buff[ i * SLC_DES_EDE3_BLOCKSIZE + j ] );
        }

        printf( "\n" );
    }
}

        

 


 

 

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