Help Center
Help CenterFreeBASICTutorials

cryptlib

Documentation

A powerful security toolkit which allows even inexperienced crypto programmers to easily add encryption and authentication services to their software.

Website: http://www.cs.auckland.ac.nz/~pgut001/cryptlib/
Platforms supported: Win32, Linux
Headers to include: cryptlib.bi
Header version: from 2005
Examples: in examples/math/cryptlib/

Example

#include Once "cryptlib.bi"



Function calc_hash( ByVal filename As String, ByVal algo As CRYPT_ALGO_TYPE ) As String

    Const BUFFER_SIZE = 8192

    Dim As Byte buffer( 0 To BUFFER_SIZE-1 )



    '' create a new context using the wanted algorithm

    Dim As CRYPT_CONTEXT ctx

    cryptCreateContext( @ctx, CRYPT_UNUSED, algo )



    '' open input file in binary mode

    Dim As Integer f = FreeFile()

    If( Open( filename For Binary Access Read As #f ) <> 0 ) Then

        Return ""

    End If



    '' read until end-of-file

    Do Until( EOF( f ) )

        Dim As Integer oldpos = Seek( f )

        Get #f, , buffer()

        Dim As Integer readlength = Seek( f ) - oldpos

        '' encrypt

        cryptEncrypt( ctx, @buffer(0), readlength )

    Loop



    '' close input file

    Close #f



    '' finalize

    cryptEncrypt( ctx, 0, 0 )



    '' get the hash result

    Dim As Long buffersize = BUFFER_SIZE

    cryptGetAttributeString( ctx, CRYPT_CTXINFO_HASHVALUE, @buffer(0), @buffersize )



    '' convert to hexadecimal

    Dim As String result = ""

    For i As Integer = 0 To buffersize-1

        result += Hex( buffer(i) )

    Next

    

    '' free the context

    cryptDestroyContext( ctx )



    Return result

End Function



    Dim As String filename = Trim( Command(1) )

    If( Len( filename ) = 0 ) Then

        Print "Usage: hash.exe filename"

        End -1

    End If



    '' init cryptlib

    cryptInit( )



    '' calculate hashes

    Print "md5:  "; calc_hash( filename, CRYPT_ALGO_MD5 )

    Print "sha1: "; calc_hash( filename, CRYPT_ALGO_SHA1 )



    '' shutdown cryptlib

    cryptEnd( )



    Sleep