|
|
|
|
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) |
| |
|
|