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 C++ Interface

The following sample demonstrates how to use the CDES and CCFBMode classes to perform file encryption/decryption in CFB mode of operation.

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

using namespace std;
using namespace QuickCrypt;

// performs DES file encryption/decryption in CFB mode
bool EncryptDecryptFile( const char* filenamefrom, const char* filenameto, SL_CIPHER_DIR dir, const unsigned char* iv, const unsigned char* key )
{
    //dir: SLC_ENCRYPT - perform encryption
    //     SLC_DECRYPT - perform decryption

    //Open files

    fstream filefrom( filenamefrom, ios::in | ios::binary );
    
    if( !filefrom )
    {
        cout << "\nCould not open file: " << filenamefrom;
        return false;
    }

    fstream fileto( filenameto, ios::out | ios::binary );
    
    if( !fileto )
    {
        cout << "\nCould not open file: " << filenameto;
        return false;
    }

    //Instantiate CCFBMode object

    CCFBMode<CDES> cipher( dir, iv, key );

    //Encrypt/Decrypt file

    const unsigned int BUFF_SIZE = 1024;
    unsigned char buff[ BUFF_SIZE ];
    
    while( !filefrom.eof() )
    {
        filefrom.read( ( char* )buff, BUFF_SIZE );

        unsigned int buffsize = filefrom.gcount();

        cipher.Process( buff, buff, buffsize ); //in-place encryption/decryption

        fileto.write( ( char* )buff, buffsize );
    }

    return true;
}

int main()
{
    char buff[10];

    char filename[256];     //Initial file
    char filenameencr[256]; //Encrypted file
    char filenamedecr[256]; //Decrypted file

    //Define key & iv

    char key[CDES::DEFAULTKEYSIZE] = 
    {
        's', 'e', 'c', 'r', 'e', 't', 'l', 'y'
    };

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

    do
    {
        //Get file to encrypt (Initial file)

        cout << "Enter the full name of the file to encrypt:\n";
        cin.getline( filename, 256 );

        //Get file to store the result of encryption (Encrypted file)

        cout << "Enter the full name of the file to store the result of encryption:\n";
        cin.getline( filenameencr, 256 );

        //Encrypt file

        if( EncryptDecryptFile( filename, filenameencr, SLC_ENCRYPT, iv, (const unsigned char*)key ) )
        {
            //Get file to store the result of decryption (Decrypted file)

            cout << "Enter the full name of the file to store the result of decryption:\n";
            cin.getline( filenamedecr, 256 );

            //Decrypt file

            EncryptDecryptFile( filenameencr, filenamedecr, SLC_DECRYPT, iv, (const unsigned char*)key );

            //At this point compare Initial file with Decrypted file. They must be identical.
        }

        //Continue?
        
        cout << "\nContinue (Y/N)?";
        cin.getline( buff, 10 );

    } while( *buff == 'Y' || *buff == 'y' );

    return 0;
}

 


 

 

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