Encrypts or decrypts an array of Bytes in one step in Electronic Codebook (EBC) mode.
VB6/VBA
Debug.Print "Testing AES128_Bytes ..." Dim nRet As Long Dim abBlock() As Byte Dim abKey() As Byte Dim abPlain() As Byte Dim abCipher() As Byte Dim nBytes As Long 'FIPS-197 'C.1 AES-128 (Nk=4, Nr=10) 'PLAINTEXT: 00112233445566778899aabbccddeeff 'KEY: 000102030405060708090a0b0c0d0e0f ' Convert input to bytes abKey = cnvBytesFromHexStr("000102030405060708090a0b0c0d0e0f") abPlain = cnvBytesFromHexStr("00112233445566778899aabbccddeeff") abCipher = cnvBytesFromHexStr("69c4e0d86a7b0430d8cdb78070b4c55a") abBlock = abPlain nBytes = UBound(abBlock) - LBound(abBlock) + 1 Debug.Print "KY=", cnvHexStrFromBytes(abKey) Debug.Print "PT=", cnvHexStrFromBytes(abBlock) ' Encrypt in one-off process nRet = AES128_Bytes(abBlock(0), abBlock(0), nBytes, abKey(0), ENCRYPT) Debug.Print "CT=", cnvHexStrFromBytes(abBlock) Debug.Print "OK=", cnvHexStrFromBytes(abCipher) Debug.Assert (StrConv(abBlock, vbUnicode) = StrConv(abCipher, vbUnicode)) ' Now decrypt back to plain text nRet = AES128_Bytes(abBlock(0), abBlock(0), nBytes, abKey(0), DECRYPT) Debug.Print "P'=", cnvHexStrFromBytes(abBlock) Debug.Assert (StrConv(abBlock, vbUnicode) = StrConv(abPlain, vbUnicode))
Output
Testing AES128_Bytes ... KY= 000102030405060708090A0B0C0D0E0F PT= 00112233445566778899AABBCCDDEEFF CT= 69C4E0D86A7B0430D8CDB78070B4C55A OK= 69C4E0D86A7B0430D8CDB78070B4C55A P'= 00112233445566778899AABBCCDDEEFF
VB.NET
Console.WriteLine("Testing AES128_Bytes ...") ''Dim nRet As Integer Dim abBlock() As Byte Dim abKey() As Byte Dim abPlain() As Byte Dim abCipher() As Byte ''Dim nBytes As Integer 'FIPS-197 'C.1 AES-128 (Nk=4, Nr=10) 'PLAINTEXT: 00112233445566778899aabbccddeeff 'KEY: 000102030405060708090a0b0c0d0e0f ' Convert input to bytes abKey = Cnv.FromHex("000102030405060708090a0b0c0d0e0f") abPlain = Cnv.FromHex("00112233445566778899aabbccddeeff") abCipher = Cnv.FromHex("69c4e0d86a7b0430d8cdb78070b4c55a") abBlock = abPlain ''nBytes = UBound(abBlock) - LBound(abBlock) + 1 Console.WriteLine("KY=" & Cnv.ToHex(abKey)) Console.WriteLine("PT=" & Cnv.ToHex(abBlock)) ' Encrypt in one-off process abBlock = Aes128.Encrypt(abBlock, abKey, Mode.ECB, Nothing) Console.WriteLine("CT=" & Cnv.ToHex(abBlock)) Console.WriteLine("OK=" & Cnv.ToHex(abCipher)) Debug.Assert(Cnv.ToHex(abBlock) = Cnv.ToHex(abCipher)) ' Now decrypt back to plain text abBlock = Aes128.Decrypt(abBlock, abKey, Mode.ECB, Nothing) Console.WriteLine("P'=" & Cnv.ToHex(abBlock)) Debug.Assert(Cnv.ToHex(abBlock) = Cnv.ToHex(abPlain))
[Contents]