Encrypts or decrypts an array of Bytes using a specified mode.
VB6/VBA
Debug.Print "Testing BLF_BytesMode ..." Dim nRet As Long Dim strOutput As String Dim strInput As String Dim strKey As String Dim strHexIV As String Dim sCorrect As String Dim nKeyLen As Long Dim abKey() As Byte Dim abOutput() As Byte Dim abData() As Byte Dim nDataLen As Long Dim abInitV() As Byte Dim nIvLen As Long strKey = "0123456789ABCDEFF0E1D2C3B4A59687" strHexIV = "FEDCBA9876543210" strInput = _ "37363534333231204E6F77206973207468652074696D6520666F722000000000" sCorrect = _ "6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC" ' Convert to byte arrays and compute lengths nKeyLen = Len(strKey) \ 2 nDataLen = Len(strInput) \ 2 nIvLen = Len(strHexIV) \ 2 abKey = cnvBytesFromHexStr(strKey) abData = cnvBytesFromHexStr(strInput) abInitV = cnvBytesFromHexStr(strHexIV) ' Dimension array for output ReDim abOutput(nDataLen - 1) Debug.Print "KY=", cnvHexStrFromBytes(abKey) Debug.Print "IV=", cnvHexStrFromBytes(abInitV) Debug.Print "PT=", cnvHexStrFromBytes(abData) ' Encrypt in one-off process nRet = BLF_BytesMode(abOutput(0), abData(0), nDataLen, abKey(0), _ nKeyLen, ENCRYPT, "CBC", abInitV(0)) Debug.Print "CT=", cnvHexStrFromBytes(abOutput), nRet Debug.Print "OK=", sCorrect ' Now decrypt back nRet = BLF_BytesMode(abData(0), abOutput(0), nDataLen, abKey(0), _ nKeyLen, DECRYPT, "cbc", abInitV(0)) Debug.Print "P'=", cnvHexStrFromBytes(abData), nRet
Output
Testing BLF_BytesMode ... KY= 0123456789ABCDEFF0E1D2C3B4A59687 IV= FEDCBA9876543210 PT= 37363534333231204E6F77206973207468652074696D6520666F722000000000 CT= 6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC 0 OK= 6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC P'= 37363534333231204E6F77206973207468652074696D6520666F722000000000 0
VB.NET
Console.WriteLine("Testing BLF_BytesMode ...") ''Dim nRet As Integer Dim strOutput As String Dim strInput As String Dim strKey As String Dim strHexIV As String Dim sCorrect As String ''Dim nKeyLen As Integer Dim abKey() As Byte Dim abOutput() As Byte Dim abData() As Byte ''Dim nDataLen As Integer Dim abInitV() As Byte ''Dim nIvLen As Integer strKey = "0123456789ABCDEFF0E1D2C3B4A59687" strHexIV = "FEDCBA9876543210" strInput = _ "37363534333231204E6F77206973207468652074696D6520666F722000000000" sCorrect = _ "6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC" ' Convert to byte arrays and compute lengths ''nKeyLen = Len(strKey) \ 2 ''nDataLen = Len(strInput) \ 2 ''nIvLen = Len(strHexIV) \ 2 abKey = Cnv.FromHex(strKey) abData = Cnv.FromHex(strInput) abInitV = Cnv.FromHex(strHexIV) ' Dimension array for output ''ReDim abOutput(nDataLen - 1) Console.WriteLine("KY=" & " " & Cnv.ToHex(abKey)) Console.WriteLine("IV=" & " " & Cnv.ToHex(abInitV)) Console.WriteLine("PT=" & " " & Cnv.ToHex(abData)) ' Encrypt in one-off process abOutput = Blowfish.Encrypt(abData, abKey, Mode.CBC, abInitV) Console.WriteLine("CT=" & " " & Cnv.ToHex(abOutput)) Console.WriteLine("OK=" & " " & sCorrect) ' Now decrypt back abOutput = Blowfish.Decrypt(abData, abKey, Mode.CBC, abInitV) Console.WriteLine("P'=" & " " & Cnv.ToHex(abData))
[Contents]