Sample code for 30+ languages & platforms
Tcl

Example: Hash Text in Chunks

Shows how to generate a final hash, like SHA-256, for a large text by processing it in chunks.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set crypt [new_CkCrypt2]

CkCrypt2_put_HashAlgorithm $crypt "sha256"
CkCrypt2_put_Charset $crypt "utf-8"

set bd [new_CkBinData]

set s "The quick brown fox jumped over the lazy dog.\r\n"

# Accumulate the text in a StringBuilder.  We'll demonstrate hashing the text in chunks,
# and then also hashing the entire text at once to show the results are the same.

CkBinData_AppendString $bd $s "utf-8"
set success [CkCrypt2_HashBeginString $crypt $s]

set i 0
while {$i < 200} {
    CkBinData_AppendString $bd $s "utf-8"
    CkCrypt2_HashMoreString $crypt $s
    set i [expr $i + 1]
}

# Get the hash in base64 format.
CkCrypt2_put_EncodingMode $crypt "base64"

set encodedHash [CkCrypt2_hashFinalENC $crypt]
puts "Hash computed in chunks: $encodedHash"

# Let's alternatively compute the hash of the entire amount of data at once,
# to show the hash computation is the same:
set encodedHash [CkCrypt2_hashBdENC $crypt $bd]
puts "Hash computed in 1 step: $encodedHash"

# Output:

# Hash computed in chunks: unwkVff61k40roRIJizaknreScHaL6frWe37kydXbZQ=
# Hash computed in 1 step: unwkVff61k40roRIJizaknreScHaL6frWe37kydXbZQ=

delete_CkCrypt2 $crypt
delete_CkBinData $bd