Platforms to show: All Mac Windows Linux Cross-Platform

/Encryption/AES/AES Test Vectors


Required plugins for this example: MBS Encryption Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Encryption/AES/AES Test Vectors

This example is the version from Thu, 4th Sep 2013.

Project "AES Test Vectors.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
EventHandler Sub Open() // AES ECB 128-bit encryption mode dim key as string = "2b7e151628aed2a6abf7158809cf4f3c" TestECB 128, key, "6bc1bee22e409f96e93d7e117393172a", "3ad77bb40d7a3660a89ecaf32466ef97" TestECB 128, key, "ae2d8a571e03ac9c9eb76fac45af8e51", "f5d3d58503b9699de785895a96fdbaaf" TestECB 128, key, "30c81c46a35ce411e5fbc1191a0a52ef", "43b1cd7f598ece23881b00e3ed030688" TestECB 128, key, "f69f2445df4f9b17ad2b417be66c3710", "7b0c785e27e8ad3f8223207104725dd4" // AES ECB 192-bit encryption mode key = "8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b" TestECB 192, key, "6bc1bee22e409f96e93d7e117393172a", "bd334f1d6e45f25ff712a214571fa5cc" TestECB 192, key, "ae2d8a571e03ac9c9eb76fac45af8e51", "974104846d0ad3ad7734ecb3ecee4eef" TestECB 192, key, "30c81c46a35ce411e5fbc1191a0a52ef", "ef7afd2270e2e60adce0ba2face6444e" TestECB 192, key, "f69f2445df4f9b17ad2b417be66c3710", "9a4b41ba738d6c72fb16691603c18e0e" // AES ECB 256-bit encryption mode key = "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4" TestECB 256, key, "6bc1bee22e409f96e93d7e117393172a", "f3eed1bdb5d2a03c064b5a7e3db181f8" TestECB 256, key, "ae2d8a571e03ac9c9eb76fac45af8e51", "591ccb10d410ed26dc5ba74a31362870" TestECB 256, key, "30c81c46a35ce411e5fbc1191a0a52ef", "b6ed21b99ca6f4f9f153e7b1beafed1d" TestECB 256, key, "f69f2445df4f9b17ad2b417be66c3710", "23304b7a39f9f3ff067d8d8f9e24ecc7" // AES CFB128 128-bit encryption mode key = "2b7e151628aed2a6abf7158809cf4f3c" TestCFB128 128, key, "000102030405060708090a0b0c0d0e0f", "6bc1bee22e409f96e93d7e117393172a", "3b3fd92eb72dad20333449f8e83cfb4a" TestCFB128 128, key, "3B3FD92EB72DAD20333449F8E83CFB4A", "ae2d8a571e03ac9c9eb76fac45af8e51", "c8a64537a0b3a93fcde3cdad9f1ce58b" TestCFB128 128, key, "C8A64537A0B3A93FCDE3CDAD9F1CE58B", "30c81c46a35ce411e5fbc1191a0a52ef", "26751f67a3cbb140b1808cf187a4f4df" TestCFB128 128, key, "26751F67A3CBB140B1808CF187A4F4DF", "f69f2445df4f9b17ad2b417be66c3710", "c04b05357c5d1c0eeac4c66f9ff7f2e6" // AES CFB128 192-bit encryption mode key = "8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b" TestCFB128 192, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "cdc80d6fddf18cab34c25909c99a4174" TestCFB128 192, key, "CDC80D6FDDF18CAB34C25909C99A4174", "ae2d8a571e03ac9c9eb76fac45af8e51", "67ce7f7f81173621961a2b70171d3d7a" TestCFB128 192, key, "67CE7F7F81173621961A2B70171D3D7A", "30c81c46a35ce411e5fbc1191a0a52ef", "2e1e8a1dd59b88b1c8e60fed1efac4c9" TestCFB128 192, key, "2E1E8A1DD59B88B1C8E60FED1EFAC4C9", "f69f2445df4f9b17ad2b417be66c3710", "c05f9f9ca9834fa042ae8fba584b09ff" // AES CFB128 256-bit encryption mode key = "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4" TestCFB128 256, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "DC7E84BFDA79164B7ECD8486985D3860" TestCFB128 256, key, "DC7E84BFDA79164B7ECD8486985D3860", "ae2d8a571e03ac9c9eb76fac45af8e51", "39ffed143b28b1c832113c6331e5407b" TestCFB128 256, key, "39FFED143B28B1C832113C6331E5407B", "30c81c46a35ce411e5fbc1191a0a52ef", "df10132415e54b92a13ed0a8267ae2f9" TestCFB128 256, key, "DF10132415E54B92A13ED0A8267AE2F9", "f69f2445df4f9b17ad2b417be66c3710", "75a385741ab9cef82031623d55b1e471" // AES OFB 128-bit encryption mode key = "2b7e151628aed2a6abf7158809cf4f3c" TestOFB 128, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "3b3fd92eb72dad20333449f8e83cfb4a" TestOFB 128, key, "50FE67CC996D32B6DA0937E99BAFEC60", "ae2d8a571e03ac9c9eb76fac45af8e51", "7789508d16918f03f53c52dac54ed825" TestOFB 128, key, "D9A4DADA0892239F6B8B3D7680E15674", "30c81c46a35ce411e5fbc1191a0a52ef", "9740051e9c5fecf64344f7a82260edcc" TestOFB 128, key, "A78819583F0308E7A6BF36B1386ABF23", "f69f2445df4f9b17ad2b417be66c3710", "304c6528f659c77866a510d9c1d6ae5e" // AES OFB 192-bit encryption mode key = "8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b" TestOFB 192, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "cdc80d6fddf18cab34c25909c99a4174" TestOFB 192, key, "A609B38DF3B1133DDDFF2718BA09565E", "ae2d8a571e03ac9c9eb76fac45af8e51", "fcc28b8d4c63837c09e81700c1100401" TestOFB 192, key, "52EF01DA52602FE0975F78AC84BF8A50", "30c81c46a35ce411e5fbc1191a0a52ef", "8d9a9aeac0f6596f559c6d4daf59a5f2" TestOFB 192, key, "BD5286AC63AABD7EB067AC54B553F71D", "f69f2445df4f9b17ad2b417be66c3710", "6d9f200857ca6c3e9cac524bd9acc92a" // AES OFB 256-bit encryption mode key = "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4" TestOFB 256, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "dc7e84bfda79164b7ecd8486985d3860" TestOFB 256, key, "B7BF3A5DF43989DD97F0FA97EBCE2F4A", "ae2d8a571e03ac9c9eb76fac45af8e51", "4febdc6740d20b3ac88f6ad82a4fb08d" TestOFB 256, key, "E1C656305ED1A7A6563805746FE03EDC", "30c81c46a35ce411e5fbc1191a0a52ef", "71ab47a086e86eedf39d1c5bba97c408" TestOFB 256, key, "41635BE625B48AFC1666DD42A09D96E7", "f69f2445df4f9b17ad2b417be66c3710", "0126141d67f37be8538f5a8be740e484" // AES CBC 128-bit encryption mode key = "2b7e151628aed2a6abf7158809cf4f3c" TestCBC 128, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "7649abac8119b246cee98e9b12e9197d" TestCBC 128, key, "7649ABAC8119B246CEE98E9B12E9197D", "ae2d8a571e03ac9c9eb76fac45af8e51", "5086cb9b507219ee95db113a917678b2" TestCBC 128, key, "5086CB9B507219EE95DB113A917678B2", "30c81c46a35ce411e5fbc1191a0a52ef", "73bed6b8e3c1743b7116e69e22229516" TestCBC 128, key, "73BED6B8E3C1743B7116E69E22229516", "f69f2445df4f9b17ad2b417be66c3710", "3ff1caa1681fac09120eca307586e1a7" // AES CBC 192-bit encryption mode key = "8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b" TestCBC 192, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "4f021db243bc633d7178183a9fa071e8" TestCBC 192, key, "4F021DB243BC633D7178183A9FA071E8", "ae2d8a571e03ac9c9eb76fac45af8e51", "b4d9ada9ad7dedf4e5e738763f69145a" TestCBC 192, key, "B4D9ADA9AD7DEDF4E5E738763F69145A", "30c81c46a35ce411e5fbc1191a0a52ef", "571b242012fb7ae07fa9baac3df102e0" TestCBC 192, key, "571B242012FB7AE07FA9BAAC3DF102E0", "f69f2445df4f9b17ad2b417be66c3710", "08b0e27988598881d920a9e64f5615cd" // AES CBC 256-bit encryption mode key = "603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4" TestCBC 256, key, "000102030405060708090A0B0C0D0E0F", "6bc1bee22e409f96e93d7e117393172a", "f58c4c04d6e5f1ba779eabfb5f7bfbd6" TestCBC 256, key, "F58C4C04D6E5F1BA779EABFB5F7BFBD6", "ae2d8a571e03ac9c9eb76fac45af8e51", "9cfc4e967edb808d679f777bc6702c7d" TestCBC 256, key, "9CFC4E967EDB808D679F777BC6702C7D", "30c81c46a35ce411e5fbc1191a0a52ef", "39f23369a9d9bacfa530e26304231461" TestCBC 256, key, "39F23369A9D9BACFA530E26304231461", "f69f2445df4f9b17ad2b417be66c3710", "b2eb05e2c39be9fcda6c19078c6a9d1b" MsgBox "OK, if no breakpoint." End EventHandler
Sub TestCBC(keylen as integer, key as string, InitializationVector as string, plainText as string, cipherText as string) dim a as new AESMBS dim k as string = DecodeHex(key) dim p as string = DecodeHex(plainText) dim i as string = DecodeHex(InitializationVector) if a.SetKey(k, keylen) then dim pm as MemoryBlock = p a.EncryptCBC(pm, pm.size, i) dim d as string = EncodeHex(pm) if d = cipherText then // ok a.DecryptCBC(pm, pm.size, i) dim e as string = EncodeHex(pm) if e = plainText then // ok else break end if else break end if else break end if End Sub
Sub TestCFB128(keylen as integer, key as string, InitializationVector as string, TestVector as string, CipherText as string) dim a as new AESMBS dim k as string = DecodeHex(key) dim p as string = DecodeHex(TestVector) dim i as string = DecodeHex(InitializationVector) if a.SetKey(k, keylen) then dim pm as MemoryBlock = p dim offset as integer a.EncryptCFB128(pm, pm.size, offset, i) dim d as string = EncodeHex(pm) if d = cipherText then // ok if a.SetKey(k, keylen) then a.DecryptCFB128(pm, pm.size, offset, i) dim e as string = EncodeHex(pm) if e = TestVector then // ok else break end if else break end if else break end if else break end if End Sub
Sub TestECB(keylen as integer, key as string, plainText as string, cipherText as string) dim a as new AESMBS dim k as string = DecodeHex(key) dim p as string = DecodeHex(plainText) if a.SetKey(k, keylen) then dim pm as MemoryBlock = p a.EncryptECB(pm) dim d as string = EncodeHex(pm) if d = cipherText then // ok a.DecryptECB(pm) dim e as string = EncodeHex(pm) if e = plainText then // ok else break end if else break end if else break end if End Sub
Sub TestOFB(keylen as integer, key as string, InitializationVector as string, TestVector as string, CipherText as string) dim a as new AESMBS dim k as string = DecodeHex(key) dim p as string = DecodeHex(TestVector) dim i as string = DecodeHex(InitializationVector) if a.SetKey(k, keylen) then dim pm as MemoryBlock = p dim offset as integer a.EncryptOFB(pm, pm.size, offset, i) dim d as string = EncodeHex(pm) if d = cipherText then // ok a.EncryptOFB(pm, pm.size, offset, i) dim e as string = EncodeHex(pm) if e = TestVector then // ok else break end if else break end if else break end if End Sub
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
End Project

See also:

The items on this page are in the following plugins: MBS Encryption Plugin.


The biggest plugin in space...