Home    | Products    | Downloads    | Purchase    | Support   

 Products

 Paint Express

 PrivyPad

 HashCalc

 FSUM

 QuickCrypt Library

    Download

    Purchase

    Samples

    License Agreement

    Related Links

    F.A.Q.

    Overview

 QuickHash Library

 FastCRC Library

 Company

 About Us

 Contact Us

 Miscellaneous

 Affiliate Program

 Site Map

SlavaSoft QuickCrypt Library Samples
Sample #13 (QuickCrypt API - Visual Basic)  

All

Previous Next


The following sample demonstrates how to use the DES_EDE3 API to encrypt a 32-byte array of data in ECB mode of operation in Visual Basic.

Private Sub MyButton_Click()
    Dim context As SL_DES_EDE3_CONTEXT
   
   
'The key is an array of SLC_DES_EDE3_DEFAULTKEYSIZE bytes
    Dim key(0 To SLC_DES_EDE3_DEFAULTKEYSIZE - 1) As Byte
   
   
'The data is an array of bytes( in this case 4 DES-EDE3 blocks )
    Dim data(0 To 31) As Byte
   
   
'Fill the key with some data
    For I = 0 To SLC_DES_EDE3_DEFAULTKEYSIZE - 1
        key(I) = SLC_DES_EDE3_DEFAULTKEYSIZE - 1 - I
    Next I
   
   
'Fill the data bytes with some values
    For I = 0 To 31
        data(I) = I
    Next I
   
   
'Initialize the context
    SL_DES_EDE3_Init context, SLC_ENCRYPT, key(0), SLC_DES_EDE3_DEFAULTKEYSIZE
   
   
'Encrypt each block in part
    For I = 0 To 3
      
'Encrypt the data passing first byte of  each block. This is in-place encrypting
       SL_DES_EDE3_ProcessBlock context, data(I * 8), data(I * 8)
    Next I
      
   
'Show what we get
   
    'Convert Data To Hex

    Dim hex As String
    hex = "0123456789ABCDEF"
    Dim strData As String
    strData = Space(64)
   
    For I = 0 To 31
       Mid(strData, 2 * I + 1, 1) = Mid(hex, data(I) \ 16 + 1, 1)
       Mid(strData, 2 * (I + 1), 1) = Mid(hex, data(I) Mod 16 + 1, 1)
    Next I
      
   
'Show it
    MsgBox strData
End Sub

Note. To be able to access the API functionality from Visual Basic, create a .bas module which contains the declarations of all functions, constants and types for QuickCrypt Library. You have to include this module in your VB project and its content has to be the following:

Public Const SLC_ENCRYPT As Long = 0
Public Const SLC_DECRYPT As Long = 1
 
Public Const SLC_DES_BLOCKSIZE As Long = 8
Public Const SLC_DES_CONTEXTSIZE As Long = 168
Public Const SLC_DES_DEFAULTKEYSIZE As Long = 8
 
Public Const SLC_DES_EDE3_BLOCKSIZE As Long = SLC_DES_BLOCKSIZE
Public Const SLC_DES_EDE3_CONTEXTSIZE As Long = 440
Public Const SLC_DES_EDE3_DEFAULTKEYSIZE As Long = 24
 
Public Const SLC_DES_EDE2_BLOCKSIZE As Long = SLC_DES_BLOCKSIZE
Public Const SLC_DES_EDE2_CONTEXTSIZE As Long = 308
Public Const SLC_DES_EDE2_DEFAULTKEYSIZE As Long = 16
 
Public Const SLC_DESX_BLOCKSIZE As Long = SLC_DES_BLOCKSIZE
Public Const SLC_DESX_CONTEXTSIZE As Long = (SLC_DES_CONTEXTSIZE + 24 + 28 + 8)
Public Const SLC_DESX_DEFAULTKEYSIZE As Long = 24
 
Public Const SLC_RIJNDAEL_BLOCKSIZE As Long = 16
Public Const SLC_RIJNDAEL_CONTEXTSIZE As Long = 312
Public Const SLC_RIJNDAEL_DEFAULTKEYSIZE As Long = 16
 
Public Const SLC_AES_BLOCKSIZE As Long = SLC_RIJNDAEL_BLOCKSIZE
Public Const SLC_AES_CONTEXTSIZE As Long = SLC_RIJNDAEL_CONTEXTSIZE
Public Const SLC_AES_DEFAULTKEYSIZE As Long = SLC_RIJNDAEL_DEFAULTKEYSIZE
 
Public Const SLC_BLOWFISH_BLOCKSIZE As Long = 8
Public Const SLC_BLOWFISH_CONTEXTSIZE As Long = 4208
Public Const SLC_BLOWFISH_DEFAULTKEYSIZE As Long = 56
 
Public Const SLC_GOST_BLOCKSIZE As Long = 8
Public Const SLC_GOST_CONTEXTSIZE As Long = 76
Public Const SLC_GOST_DEFAULTKEYSIZE As Long = 32
 
Public Type SL_DES_CONTEXT
Value(0 To SLC_DES_CONTEXTSIZE - 1) As Byte
End Type
 
Public Type SL_DES_EDE3_CONTEXT
Value(0 To SLC_DES_EDE3_CONTEXTSIZE - 1) As Byte
End Type
 
Public Type SL_DES_EDE2_CONTEXT
Value(0 To SLC_DES_EDE2_CONTEXTSIZE - 1) As Byte
End Type
 
Public Type SL_DESX_CONTEXT
Value(0 To SLC_DESX_CONTEXTSIZE - 1) As Byte
End Type
 
Public Type SL_RIJNDAEL_CONTEXT
Value(0 To SLC_RIJNDAEL_CONTEXTSIZE - 1) As Byte
End Type
 
Public Type SL_AES_CONTEXT
Value(0 To SLC_AES_CONTEXTSIZE - 1) As Byte
End Type
 
Public Type SL_BLOWFISH_CONTEXT
Value(0 To SLC_BLOWFISH_CONTEXTSIZE - 1) As Byte
End Type
 
Public Type SL_GOST_CONTEXT
Value(0 To SLC_GOST_CONTEXTSIZE - 1) As Byte
End Type
 
Public Declare Sub SL_DES_Init Lib "QuickCrypt.dll" Alias "#1" (pContext As SL_DES_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_DES_ProcessBlock Lib "QuickCrypt.dll" Alias "#2" (pContext As SL_DES_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
Public Declare Function SL_DES_CheckKeyParityBits Lib "QuickCrypt.dll" Alias "#3" (pKey As Any) As Long
Public Declare Sub SL_DES_CorrectKeyParityBits Lib "QuickCrypt.dll" Alias "#4" (pKey As Any)
 
Public Declare Sub SL_DES_EDE3_Init Lib "QuickCrypt.dll" Alias "#11" (pContext As SL_DES_EDE3_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_DES_EDE3_ProcessBlock Lib "QuickCrypt.dll" Alias "#12" (pContext As SL_DES_EDE3_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
 
Public Declare Sub SL_DES_EDE2_Init Lib "QuickCrypt.dll" Alias "#21" (pContext As SL_DES_EDE2_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_DES_EDE2_ProcessBlock Lib "QuickCrypt.dll" Alias "#22" (pContext As SL_DES_EDE2_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
 
Public Declare Sub SL_DESX_Init Lib "QuickCrypt.dll" Alias "#31" (pContext As SL_DESX_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_DESX_ProcessBlock Lib "QuickCrypt.dll" Alias "#32" (pContext As SL_DESX_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
 
Public Declare Sub SL_RIJNDAEL_Init Lib "QuickCrypt.dll" Alias "#41" (pContext As SL_RIJNDAEL_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_RIJNDAEL_ProcessBlock Lib "QuickCrypt.dll" Alias "#42" (pContext As SL_RIJNDAEL_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
 
Public Declare Sub SL_AES_Init Lib "QuickCrypt.dll" Alias "#41" (pContext As SL_AES_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_AES_ProcessBlock Lib "QuickCrypt.dll" Alias "#42" (pContext As SL_AES_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
 
Public Declare Sub SL_BLOWFISH_Init Lib "QuickCrypt.dll" Alias "#51" (pContext As SL_BLOWFISH_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_BLOWFISH_ProcessBlock Lib "QuickCrypt.dll" Alias "#52" (pContext As SL_BLOWFISH_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
 
Public Declare Sub SL_GOST_Init Lib "QuickCrypt.dll" Alias "#61" (pContext As SL_GOST_CONTEXT, ByVal nDir As Long, pKey As Any, ByVal nKeyKen As Long)
Public Declare Sub SL_GOST_ProcessBlock Lib "QuickCrypt.dll" Alias "#62" (pContext As SL_GOST_CONTEXT, pDestBlock As Any, pSrcBlock As Any)
 

Public Declare Function SL_CBC_Init Lib "QuickCrypt.dll" Alias "#71" (pContext As Any, ByVal nDir As Long, pIV As Any, ByVal bPadded As Boolean) As Long
Public Declare Sub SL_CBC_ProcessBlock Lib "QuickCrypt.dll" Alias "#72" (pContext As Any, pDestBlock As Any, pSrcBlock As Any)
Public Declare Function SL_CBC_ProcessLastBlock Lib "QuickCrypt.dll" Alias "#73" (pContext As Any, pDestBlock As Any, pSrcBlock As Any, ByVal nSize As Long) As Long
Public Declare Function SL_CBC_Process Lib "QuickCrypt.dll" Alias "#74" (pContext As Any, pDest As Any, pSrc As Any, ByVal nSize As Long) As Long

Public Declare Function SL_CFB_Init Lib "QuickCrypt.dll" Alias "#81" (pContext As Any, ByVal nDir As Long, pIV As Any, ByVal fs As Long) As Long
Public Declare Sub SL_CFB_Process Lib "QuickCrypt.dll" Alias "#82" (pContext As Any, pDest As Any, pSrc As Any, ByVal nSize As Long)

Public Declare Function SL_OFB_Init Lib "QuickCrypt.dll" Alias "#91" (pContext As Any, ByVal nDir As Long, pIV As Any, ByVal fs As Long) As Long
Public Declare Sub SL_OFB_Process Lib "QuickCrypt.dll" Alias "#92" (pContext As Any, pDest As Any, pSrc As Any, ByVal nSize As Long)

Public Declare Function SL_CTR_Init Lib "QuickCrypt.dll" Alias "#101" (pContext As Any, ByVal nDir As Long, pIV As Any) As Long
Public Declare Sub SL_CTR_Process Lib "QuickCrypt.dll" Alias "#102" (pContext As Any, pDest As Any, pSrc As Any, ByVal nSize As Long)
Public Declare Sub SL_CTR_Seek Lib "QuickCrypt.dll" Alias "#103" (pContext As Any, ByVal nPos As Long)
 
  Copyright © SlavaSoft Inc. All rights reserved.