Мощный инструмент безопасности, который позволяет даже неопытным
крипто-программистам легко добавить шифрование и услуги аутентификации к их
программному обеспечению.
Вебсайт: http://www.cs.auckland.ac.nz/~pgut001/cryptlib/
Поддерживаемые платформы: Win32, Linux
Заголовки: cryptlib.bi
Версия заголовков: от 2005 года
Примеры: в examples/math/cryptlib/
Пример
#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 )
'' создания нового контекста для
использования желаемого алгоритма
Dim As CRYPT_CONTEXT ctx
cryptCreateContext( @ctx, CRYPT_UNUSED, algo )
'' открыть файл для ввода в
двоичном режиме
Dim As Integer f = FreeFile()
If( Open( filename For Binary Access Read As #f ) <> 0 ) Then
Return ""
End If
'' читаем до конца файла
Do Until( EOF( f ) )
Dim As Integer oldpos = Seek( f )
Get #f, , buffer()
Dim As Integer readlength = Seek( f ) - oldpos
'' шифруем
cryptEncrypt( ctx, @buffer(0), readlength )
Loop
'' закрываем файл
Close #f
'' завершение
cryptEncrypt( ctx, 0, 0 )
'' получить результат хэша
Dim As Integer buffersize = BUFFER_SIZE
cryptGetAttributeString( ctx, CRYPT_CTXINFO_HASHVALUE, @buffer(0), @buffersize )
'' преобразовываем в
шестнадцатеричное
Dim As String result = ""
For i As Integer = 0 To buffersize-1
result += Hex( buffer(i) )
Next
'' освобождаем контекст
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
'' инициализация cryptlib
cryptInit( )
'' Подсчитываем хеш
Print "md5: "; calc_hash( filename, CRYPT_ALGO_MD5 )
Print "sha: "; calc_hash( filename, CRYPT_ALGO_SHA )
'' отключение cryptlib
cryptEnd( )
Sleep