Sample code for 30+ languages & platforms
PureBasic

Hash File: SHA-1, HAVAL, MD2, MD5, SHA-256, SHA-384, SHA-512

See more Encryption Examples

Computing the hash for a file of any size.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkCrypt2.pb"

Procedure ChilkatExample()

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

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

    ; Any type of file may be hashed.
    ; There is  no size limitation because the file is consumed
    ; in streaming mode internally.
    filename.s
    filename = "something.zip"

    CkCrypt2::setCkHashAlgorithm(crypt, "sha1")
    CkCrypt2::setCkEncodingMode(crypt, "hex")

    ; Other possible EncodingMode settings are: 
    ; "quoted-printable", "base64", "base32", and "url"

    hash.s = CkCrypt2::ckHashFileENC(crypt,filename)
    Debug "SHA1:"
    Debug hash

    ; Hash using MD2
    CkCrypt2::setCkHashAlgorithm(crypt, "md2")
    hash = CkCrypt2::ckHashFileENC(crypt,filename)
    Debug "MD2:"
    Debug hash

    ; Hash using MD5
    CkCrypt2::setCkHashAlgorithm(crypt, "md5")
    hash = CkCrypt2::ckHashFileENC(crypt,filename)
    Debug "MD5:"
    Debug hash

    ; Hash using SHA-256
    CkCrypt2::setCkHashAlgorithm(crypt, "sha256")
    hash = CkCrypt2::ckHashFileENC(crypt,filename)
    Debug "SHA256:"
    Debug hash

    ; Hash using SHA-384
    CkCrypt2::setCkHashAlgorithm(crypt, "sha384")
    hash = CkCrypt2::ckHashFileENC(crypt,filename)
    Debug "SHA384:"
    Debug hash

    ; Hash using SHA-512
    CkCrypt2::setCkHashAlgorithm(crypt, "sha512")
    hash = CkCrypt2::ckHashFileENC(crypt,filename)
    Debug "SHA512:"
    Debug hash

    ; Hash using HAVAL
    ; There are two additional properties relevant to HAVAL:
    ; HavalRounds, and KeyLength.
    ; HavalRounds can have values of 3, 4, or 5.
    ; KeyLength can have values of 128, 160, 192, 224, or 256
    CkCrypt2::setCkHashAlgorithm(crypt, "haval")
    CkCrypt2::setCkHavalRounds(crypt, 5)
    CkCrypt2::setCkKeyLength(crypt, 256)
    hash = CkCrypt2::ckHashFileENC(crypt,filename)
    Debug "Haval:"
    Debug hash


    CkCrypt2::ckDispose(crypt)


    ProcedureReturn
EndProcedure