Unicode C
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
#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);
}