Sample code for 30+ languages & platforms
PureBasic

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 PureBasic Downloads

PureBasic
IncludeFile "CkCrypt2.pb"
IncludeFile "CkBinData.pb"

Procedure ChilkatExample()

    success.i = 0

    crypt.i = CkCrypt2::ckCreate()
    If crypt.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkCrypt2::setCkHashAlgorithm(crypt, "sha256")
    CkCrypt2::setCkCharset(crypt, "utf-8")

    bd.i = CkBinData::ckCreate()
    If bd.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    s.s = "The quick brown fox jumped over the lazy dog." + Chr(13) + Chr(10)

    ; 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::ckAppendString(bd,s,"utf-8")
    success = CkCrypt2::ckHashBeginString(crypt,s)

    i.i = 0
    While i < 200
        CkBinData::ckAppendString(bd,s,"utf-8")
        CkCrypt2::ckHashMoreString(crypt,s)
        i = i + 1
    Wend

    ; Get the hash in base64 format.
    CkCrypt2::setCkEncodingMode(crypt, "base64")

    encodedHash.s = CkCrypt2::ckHashFinalENC(crypt)
    Debug "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:
    encodedHash = CkCrypt2::ckHashBdENC(crypt,bd)
    Debug "Hash computed in 1 step: " + encodedHash

    ; Output:

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


    CkCrypt2::ckDispose(crypt)
    CkBinData::ckDispose(bd)


    ProcedureReturn
EndProcedure