Sample code for 30+ languages & platforms
Unicode C

Hash Binary Data (SHA256 and other hash algorithms)

Demonstrates how to hash binary bytes using SHA256, SHA384, SHA512, MD2, MD5, HAVAL, RIPEMD, etc.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkBinDataW.h>
#include <C_CkByteData.h>
#include <C_CkCrypt2W.h>
#include <C_CkStringBuilderW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkBinDataW jpgData;
    HCkByteData jpgBytes;
    HCkCrypt2W crypt;
    HCkByteData hashBytes;
    HCkStringBuilderW sb;
    const wchar_t *hashHexStr;

    success = FALSE;

    //  This example requires the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    //  Let's load a binary file to get the bytes..
    jpgData = CkBinDataW_Create();
    success = CkBinDataW_LoadFile(jpgData,L"qa_data/jpg/starfish.jpg");
    if (success != TRUE) {
        wprintf(L"Failed to load file.\n");
        CkBinDataW_Dispose(jpgData);
        return;
    }

    jpgBytes = CkByteData_Create();
    success = CkBinDataW_GetBinary(jpgData,jpgBytes);

    crypt = CkCrypt2W_Create();

    //  Choose the hash algorithm.
    //  Can be  "sha1", "sha256", "sha384", "sha512", "md2", "md5", "haval", "ripemd128", "ripemd160","ripemd256", or "ripemd320".
    CkCrypt2W_putHashAlgorithm(crypt,L"sha256");

    hashBytes = CkByteData_Create();
    success = CkCrypt2W_HashBytes(crypt,jpgBytes,hashBytes);

    //  Let's examine the hash as a hex string.
    sb = CkStringBuilderW_Create();
    CkStringBuilderW_AppendEncoded(sb,hashBytes,L"hex");
    wprintf(L"SHA256 hash = %s\n",CkStringBuilderW_getAsString(sb));

    //  We could alternatively hash the bytes and receive the hex result directly:
    CkCrypt2W_putEncodingMode(crypt,L"hex");
    hashHexStr = CkCrypt2W_hashBytesENC(crypt,jpgBytes);
    wprintf(L"SHA256 hash = %s\n",hashHexStr);


    CkBinDataW_Dispose(jpgData);
    CkByteData_Dispose(jpgBytes);
    CkCrypt2W_Dispose(crypt);
    CkByteData_Dispose(hashBytes);
    CkStringBuilderW_Dispose(sb);

    }