Encrypts/decrypts an array of bytes using Triple DES.
VB6/VBA
Debug.Print "Testing TDEA_BytesMode ..." Dim nRet As Long Dim sOutput As String Dim sInput As String Dim sKey As String Dim sHexIV As String Dim sCorrect As String Dim nKeyLen As Long Dim nDataLen As Long Dim nIVLen As Long Dim aKey() As Byte Dim aResult() As Byte Dim aData() As Byte Dim aInitV() As Byte sKey = "0123456789abcdeffedcba987654321089abcdef01234567" sHexIV = "1234567890abcdef" sInput = "Now is the time for all " sCorrect = "204011f986e35647199e47af391620c5bb9a5bcfc86db0bb" ' Convert hex strings to byte arrays nKeyLen = Len(sKey) \ 2 ReDim aKey(nKeyLen) Call CNV_BytesFromHexStr(aKey(0), nKeyLen, sKey) nIVLen = Len(sHexIV) \ 2 ReDim aInitV(nIVLen) Call CNV_BytesFromHexStr(aInitV(0), nIVLen, sHexIV) ' Convert string to byte array and dimension aResult array aData() = StrConv(sInput, vbFromUnicode) nDataLen = UBound(aData) + 1 ReDim aResult(nDataLen - 1) Debug.Print "KY=" & cnvHexStrFromBytes(aKey) Debug.Print "IV=" & cnvHexStrFromBytes(aInitV) Debug.Print "PT=" & "[" & sInput & "]" ' Encrypt in one-off process nRet = TDEA_BytesMode(aResult(0), aData(0), nDataLen, _ aKey(0), ENCRYPT, "CBC", aInitV(0)) Debug.Print "CT=" & cnvHexStrFromBytes(aResult) & " " & nRet Debug.Print "OK=" & sCorrect ' Now decrypt back nRet = TDEA_BytesMode(aData(0), aResult(0), nDataLen, _ aKey(0), DECRYPT, "cbc", aInitV(0)) sOutput = StrConv(aData(), vbUnicode) Debug.Print "P'=" & "[" & sOutput & "]" & " " & nRet
Output
Testing TDEA_BytesMode ... KY=0123456789ABCDEFFEDCBA987654321089ABCDEF0123456700 IV=1234567890ABCDEF00 PT=[Now is the time for all ] CT=204011F986E35647199E47AF391620C5BB9A5BCFC86DB0BB 0 OK=204011f986e35647199e47af391620c5bb9a5bcfc86db0bb P'=[Now is the time for all ] 0
VB.NET
Console.WriteLine("Testing TDEA_BytesMode ...")
Dim sOutput As String
Dim sInput As String
Dim sKey As String
Dim sHexIV As String
Dim sCorrect As String
Dim aKey() As Byte
Dim aResult() As Byte
Dim aData() As Byte
Dim aInitV() As Byte
sKey = "0123456789abcdeffedcba987654321089abcdef01234567"
sHexIV = "1234567890abcdef"
sInput = "Now is the time for all "
sCorrect = "204011f986e35647199e47af391620c5bb9a5bcfc86db0bb"
' Convert hex strings to byte arrays
aKey = Cnv.FromHex(sKey)
aInitV = Cnv.FromHex(sHexIV)
' Convert string to byte array
aData = System.Text.Encoding.Default.GetBytes(sInput)
Console.WriteLine("KY=" & Cnv.ToHex(aKey))
Console.WriteLine("IV=" & Cnv.ToHex(aInitV))
Console.WriteLine("PT=" & "[" & sInput & "]")
' Encrypt in one-off process
aResult = Tdea.Encrypt(aData, aKey, Mode.CBC, aInitV)
Console.WriteLine("CT=" & Cnv.ToHex(aResult) & " " & General.ErrorCode)
Console.WriteLine("OK=" & sCorrect)
' Now decrypt back
aData = Tdea.Decrypt(aResult, aKey, Mode.CBC, aInitV)
sOutput = System.Text.Encoding.Default.GetString(aData)
Console.WriteLine("P'=" & "[" & sOutput & "]" & " " & General.ErrorCode)
[Contents]