Contents 

QuickHash Library
QuickHash Library Overview
QuickHash Library Applications
QuickHash Library Installation
Register QuickHash Library
MD2
CMD2 ( C++ Interface )
CMD2 class members
MD2 API ( QuickHash API )
MD2 API Functions
MD2 ( QuickHash Type Library )
MD4
CMD4 ( C++ Interface )
CMD4 class members
MD4 API ( QuickHash API )
MD4 API Functions
MD4 ( QuickHash Type Library )
MD5
CMD5 ( C++ Interface )
CMD5 class members
MD5 API ( QuickHash API )
MD5 API Functions
MD5 ( QuickHash Type Library )
SHA-1
CSHA1 ( C++ Interface )
CSHA1 class members
SHA1 API ( QuickHash API )
SHA1 API Functions
SHA1 ( QuickHash Type Library )
SHA-2 (256)
CSHA256 ( C++ Interface )
CSHA256 class members
SHA256 API ( QuickHash API )
SHA256 API Functions
SHA256 ( QuickHash Type Library )
SHA-2 (384)
CSHA384 ( C++ Interface )
CSHA384 class members
SHA384 API ( QuickHash API )
SHA384 API Functions
SHA384 ( QuickHash Type Library )
SHA-2 (512)
CSHA512 ( C++ Interface )
CSHA512 class members
SHA512 API ( QuickHash API )
SHA512 API Functions
SHA512 ( QuickHash Type Library )
RIPEMD-128
CRIPEMD128 ( C++ Interface )
CRIPEMD128 ( C++ Interface )
RIPEMD128 API ( QuickHash API )
RIPEMD128 API Functions
RIPEMD128 ( QuickHash Type Library )
RIPEMD-160
CRIPEMD160 ( C++ Interface )
CRIPEMD160 ( C++ Interface )
RIPEMD160 API ( QuickHash API )
RIPEMD160 API Functions
RIPEMD160 ( QuickHash Type Library )
RIPEMD-256
CRIPEMD256 ( C++ Interface )
CRIPEMD256 ( C++ Interface )
RIPEMD256 API ( QuickHash API )
RIPEMD256 API Functions
RIPEMD256 ( QuickHash Type Library )
RIPEMD-320
CRIPEMD320 ( C++ Interface )
CRIPEMD320 ( C++ Interface )
RIPEMD320 API ( QuickHash API )
RIPEMD320 API Functions
RIPEMD320 ( QuickHash Type Library )
PANAMA
CPanama ( C++ Interface )
CPanama class members
PANAMA API ( QuickHash API )
PANAMA API Functions
PANAMA ( QuickHash Type Library )
TIGER
CTiger
CTiger class members
TIGER API ( QuickHash API )
TIGER API Functions
TIGER ( QuickHash Type Library )
CRC16
CCRC16 ( C++ Interface )
CCRC16 class members
CRC16 API ( QuickHash API )
CRC16 API Functions
CRC16 ( QuickHash Type Library )
CRC16C
CCRC16C ( C++ Interface )
CCRC16C class members
CRC16C API ( QuickHash API )
CRC16C API Functions
CRC16C ( QuickHash Type Library )
CRC32
CCRC32 ( C++ Interface )
CCRC32 class members
CRC32 API ( QuickHash API )
CRC32 API Functions
CRC32 ( QuickHash Type Library )
ADLER32
CAdler32 ( C++ Interface )
CAdler32 class members
ADLER32 API ( QuickHash API )
ADLER32 API Functions
ADLER32 ( QuickHash Type Library )
HMAC
CHMAC ( C++ Interface )
CHMAC class members
HMAC API ( QuickHash API )
HMAC API Functions
HMAC ( QuickHash Type Library )
QuickHash Type Library
Type Library Overview
Type Library Functions
Type Library Constants
Type Library Types
Type Library Error Codes
QuickHash Library Run-Time Dynamic Linking
Function Indicies in QuickHash.dll
License Agreement
Samples

SlavaSoft QuickHash Library Online Help

Prev Page Next Page
QuickHash Library C++ Interface

The following sample demonstrates how to use the CTiger class to calculate the TIGER message digest for a string.

#include <iostream>
#include <QuickHash.h>

using namespace std;
using namespace QuickHash;

void ConvertToHex( char* dest, const unsigned char* src, unsigned int count );

int main()
{
    char buff[ 256 ]; 

    unsigned char digest[ CTiger::DIGESTSIZE ];
    char          digesthex[ CTiger::HEXDIGESTSIZE ]; //0 terminated

    do
    {
        //Get the string from the user

        cout << "\nEnter a string: ";
        cin.getline( buff, 256, '\n' );

        cout << "\nDigest for \"" << buff <<"\":";

        //Calculate the digest using CalculateHex

        cout << "\nCalculated using CalculateHex:        ";
        
        CTiger::CalculateHex( digesthex, (const unsigned char*)buff, strlen( buff ) );

        cout << digesthex;

        //Calculate the digest using Calculate

        cout << "\nCalculated using Calculate:           ";

        CTiger::Calculate( digest, (const unsigned char*)buff, strlen( buff ) );

        ConvertToHex( digesthex, digest, CTiger::DIGESTSIZE );

        cout << digesthex;

        //Instantiate a CTiger object

        CTiger hash;

        //Calculate the digest using Update and FinalHex

        cout << "\nCalculated using Update and FinalHex: ";

        hash.Update( (const unsigned char*)buff, strlen( buff ) );
        hash.FinalHex( digesthex ); // FinalHex reinitializes the hash object for the next use

        cout << digesthex;

        //Calculate the digest using Update and Final

        cout << "\nCalculated using Update and Final:    ";

        hash.Update( (const unsigned char*)buff, strlen( buff ) );
        hash.Final( digest ); // Final reinitializes the hash object for the next use

        ConvertToHex( digesthex, digest, CTiger::DIGESTSIZE );

        cout << digesthex;

        //Continue?

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

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

    return 0;
}

void ConvertToHex( char* dest, const unsigned char* src, unsigned int count )
{
    static char hex[ 16 ] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

    for( unsigned int i = 0; i < count; ++i )
    {
        *dest++ = hex[ *src / 16 ];
        *dest++ = hex[ *src++ % 16 ];
    }

    *dest = '\0';
}

        

 


 

 

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