Need Help with AES ECB Encryption in VBA | Bytes (2024)

Pink Jazz

Need Help with AES ECB Encryption in VBA | Bytes (1) 1 New Member

Hello there. I am new to VBA and AES encryption, and I came upon this thread:
https://bytes.com/topic/access/insig...m-vba-vbscript

I decided to modifiy zmbd's post to read and write to/from an Excel spreadsheet, instead of from a file, with the input in Column A and the output in Column B.

Here is my code, modified from zmbd's code:

Expand|Select|Wrap|Line Numbers

  1. OptionExplicit
  2. SubAES_ECB(sPassIn)
  3. ''
  4. ''BasedoncodebyRabbit
  5. 'http://bytes.com/topic/access/insights/906850-aes-encryption-algorithm-vba-vbscript
  6. '
  7. '<<ModaddedthesPassinparameter>>
  8. '<<Modadded()attheendofthefollowingarrayvariables>>
  9. Dimsbox(),sboxinv(),rcon()
  10. Dimg2(),g3(),g9(),g11(),g13(),g14()
  11. g2=Array(_
  12. &H0,&H2,&H4,&H6,&H8,&HA,&HC,&HE,&H10,&H12,&H14,&H16,&H18,&H1A,&H1C,&H1E,_
  13. &H20,&H22,&H24,&H26,&H28,&H2A,&H2C,&H2E,&H30,&H32,&H34,&H36,&H38,&H3A,&H3C,&H3E,_
  14. &H40,&H42,&H44,&H46,&H48,&H4A,&H4C,&H4E,&H50,&H52,&H54,&H56,&H58,&H5A,&H5C,&H5E,_
  15. &H60,&H62,&H64,&H66,&H68,&H6A,&H6C,&H6E,&H70,&H72,&H74,&H76,&H78,&H7A,&H7C,&H7E,_
  16. &H80,&H82,&H84,&H86,&H88,&H8A,&H8C,&H8E,&H90,&H92,&H94,&H96,&H98,&H9A,&H9C,&H9E,_
  17. &HA0,&HA2,&HA4,&HA6,&HA8,&HAA,&HAC,&HAE,&HB0,&HB2,&HB4,&HB6,&HB8,&HBA,&HBC,&HBE,_
  18. &HC0,&HC2,&HC4,&HC6,&HC8,&HCA,&HCC,&HCE,&HD0,&HD2,&HD4,&HD6,&HD8,&HDA,&HDC,&HDE,_
  19. &HE0,&HE2,&HE4,&HE6,&HE8,&HEA,&HEC,&HEE,&HF0,&HF2,&HF4,&HF6,&HF8,&HFA,&HFC,&HFE,_
  20. &H1B,&H19,&H1F,&H1D,&H13,&H11,&H17,&H15,&HB,&H9,&HF,&HD,&H3,&H1,&H7,&H5,_
  21. &H3B,&H39,&H3F,&H3D,&H33,&H31,&H37,&H35,&H2B,&H29,&H2F,&H2D,&H23,&H21,&H27,&H25,_
  22. &H5B,&H59,&H5F,&H5D,&H53,&H51,&H57,&H55,&H4B,&H49,&H4F,&H4D,&H43,&H41,&H47,&H45,_
  23. &H7B,&H79,&H7F,&H7D,&H73,&H71,&H77,&H75,&H6B,&H69,&H6F,&H6D,&H63,&H61,&H67,&H65,_
  24. &H9B,&H99,&H9F,&H9D,&H93,&H91,&H97,&H95,&H8B,&H89,&H8F,&H8D,&H83,&H81,&H87,&H85,_
  25. &HBB,&HB9,&HBF,&HBD,&HB3,&HB1,&HB7,&HB5,&HAB,&HA9,&HAF,&HAD,&HA3,&HA1,&HA7,&HA5,_
  26. &HDB,&HD9,&HDF,&HDD,&HD3,&HD1,&HD7,&HD5,&HCB,&HC9,&HCF,&HCD,&HC3,&HC1,&HC7,&HC5,_
  27. &HFB,&HF9,&HFF,&HFD,&HF3,&HF1,&HF7,&HF5,&HEB,&HE9,&HEF,&HED,&HE3,&HE1,&HE7,&HE5)
  28. g3=Array(_
  29. &H0,&H3,&H6,&H5,&HC,&HF,&HA,&H9,&H18,&H1B,&H1E,&H1D,&H14,&H17,&H12,&H11,_
  30. &H30,&H33,&H36,&H35,&H3C,&H3F,&H3A,&H39,&H28,&H2B,&H2E,&H2D,&H24,&H27,&H22,&H21,_
  31. &H60,&H63,&H66,&H65,&H6C,&H6F,&H6A,&H69,&H78,&H7B,&H7E,&H7D,&H74,&H77,&H72,&H71,_
  32. &H50,&H53,&H56,&H55,&H5C,&H5F,&H5A,&H59,&H48,&H4B,&H4E,&H4D,&H44,&H47,&H42,&H41,_
  33. &HC0,&HC3,&HC6,&HC5,&HCC,&HCF,&HCA,&HC9,&HD8,&HDB,&HDE,&HDD,&HD4,&HD7,&HD2,&HD1,_
  34. &HF0,&HF3,&HF6,&HF5,&HFC,&HFF,&HFA,&HF9,&HE8,&HEB,&HEE,&HED,&HE4,&HE7,&HE2,&HE1,_
  35. &HA0,&HA3,&HA6,&HA5,&HAC,&HAF,&HAA,&HA9,&HB8,&HBB,&HBE,&HBD,&HB4,&HB7,&HB2,&HB1,_
  36. &H90,&H93,&H96,&H95,&H9C,&H9F,&H9A,&H99,&H88,&H8B,&H8E,&H8D,&H84,&H87,&H82,&H81,_
  37. &H9B,&H98,&H9D,&H9E,&H97,&H94,&H91,&H92,&H83,&H80,&H85,&H86,&H8F,&H8C,&H89,&H8A,_
  38. &HAB,&HA8,&HAD,&HAE,&HA7,&HA4,&HA1,&HA2,&HB3,&HB0,&HB5,&HB6,&HBF,&HBC,&HB9,&HBA,_
  39. &HFB,&HF8,&HFD,&HFE,&HF7,&HF4,&HF1,&HF2,&HE3,&HE0,&HE5,&HE6,&HEF,&HEC,&HE9,&HEA,_
  40. &HCB,&HC8,&HCD,&HCE,&HC7,&HC4,&HC1,&HC2,&HD3,&HD0,&HD5,&HD6,&HDF,&HDC,&HD9,&HDA,_
  41. &H5B,&H58,&H5D,&H5E,&H57,&H54,&H51,&H52,&H43,&H40,&H45,&H46,&H4F,&H4C,&H49,&H4A,_
  42. &H6B,&H68,&H6D,&H6E,&H67,&H64,&H61,&H62,&H73,&H70,&H75,&H76,&H7F,&H7C,&H79,&H7A,_
  43. &H3B,&H38,&H3D,&H3E,&H37,&H34,&H31,&H32,&H23,&H20,&H25,&H26,&H2F,&H2C,&H29,&H2A,_
  44. &HB,&H8,&HD,&HE,&H7,&H4,&H1,&H2,&H13,&H10,&H15,&H16,&H1F,&H1C,&H19,&H1A)
  45. g9=Array(_
  46. &H0,&H9,&H12,&H1B,&H24,&H2D,&H36,&H3F,&H48,&H41,&H5A,&H53,&H6C,&H65,&H7E,&H77,_
  47. &H90,&H99,&H82,&H8B,&HB4,&HBD,&HA6,&HAF,&HD8,&HD1,&HCA,&HC3,&HFC,&HF5,&HEE,&HE7,_
  48. &H3B,&H32,&H29,&H20,&H1F,&H16,&HD,&H4,&H73,&H7A,&H61,&H68,&H57,&H5E,&H45,&H4C,_
  49. &HAB,&HA2,&HB9,&HB0,&H8F,&H86,&H9D,&H94,&HE3,&HEA,&HF1,&HF8,&HC7,&HCE,&HD5,&HDC,_
  50. &H76,&H7F,&H64,&H6D,&H52,&H5B,&H40,&H49,&H3E,&H37,&H2C,&H25,&H1A,&H13,&H8,&H1,_
  51. &HE6,&HEF,&HF4,&HFD,&HC2,&HCB,&HD0,&HD9,&HAE,&HA7,&HBC,&HB5,&H8A,&H83,&H98,&H91,_
  52. &H4D,&H44,&H5F,&H56,&H69,&H60,&H7B,&H72,&H5,&HC,&H17,&H1E,&H21,&H28,&H33,&H3A,_
  53. &HDD,&HD4,&HCF,&HC6,&HF9,&HF0,&HEB,&HE2,&H95,&H9C,&H87,&H8E,&HB1,&HB8,&HA3,&HAA,_
  54. &HEC,&HE5,&HFE,&HF7,&HC8,&HC1,&HDA,&HD3,&HA4,&HAD,&HB6,&HBF,&H80,&H89,&H92,&H9B,_
  55. &H7C,&H75,&H6E,&H67,&H58,&H51,&H4A,&H43,&H34,&H3D,&H26,&H2F,&H10,&H19,&H2,&HB,_
  56. &HD7,&HDE,&HC5,&HCC,&HF3,&HFA,&HE1,&HE8,&H9F,&H96,&H8D,&H84,&HBB,&HB2,&HA9,&HA0,_
  57. &H47,&H4E,&H55,&H5C,&H63,&H6A,&H71,&H78,&HF,&H6,&H1D,&H14,&H2B,&H22,&H39,&H30,_
  58. &H9A,&H93,&H88,&H81,&HBE,&HB7,&HAC,&HA5,&HD2,&HDB,&HC0,&HC9,&HF6,&HFF,&HE4,&HED,_
  59. &HA,&H3,&H18,&H11,&H2E,&H27,&H3C,&H35,&H42,&H4B,&H50,&H59,&H66,&H6F,&H74,&H7D,_
  60. &HA1,&HA8,&HB3,&HBA,&H85,&H8C,&H97,&H9E,&HE9,&HE0,&HFB,&HF2,&HCD,&HC4,&HDF,&HD6,_
  61. &H31,&H38,&H23,&H2A,&H15,&H1C,&H7,&HE,&H79,&H70,&H6B,&H62,&H5D,&H54,&H4F,&H46)
  62. g11=Array(_
  63. &H0,&HB,&H16,&H1D,&H2C,&H27,&H3A,&H31,&H58,&H53,&H4E,&H45,&H74,&H7F,&H62,&H69,_
  64. &HB0,&HBB,&HA6,&HAD,&H9C,&H97,&H8A,&H81,&HE8,&HE3,&HFE,&HF5,&HC4,&HCF,&HD2,&HD9,_
  65. &H7B,&H70,&H6D,&H66,&H57,&H5C,&H41,&H4A,&H23,&H28,&H35,&H3E,&HF,&H4,&H19,&H12,_
  66. &HCB,&HC0,&HDD,&HD6,&HE7,&HEC,&HF1,&HFA,&H93,&H98,&H85,&H8E,&HBF,&HB4,&HA9,&HA2,_
  67. &HF6,&HFD,&HE0,&HEB,&HDA,&HD1,&HCC,&HC7,&HAE,&HA5,&HB8,&HB3,&H82,&H89,&H94,&H9F,_
  68. &H46,&H4D,&H50,&H5B,&H6A,&H61,&H7C,&H77,&H1E,&H15,&H8,&H3,&H32,&H39,&H24,&H2F,_
  69. &H8D,&H86,&H9B,&H90,&HA1,&HAA,&HB7,&HBC,&HD5,&HDE,&HC3,&HC8,&HF9,&HF2,&HEF,&HE4,_
  70. &H3D,&H36,&H2B,&H20,&H11,&H1A,&H7,&HC,&H65,&H6E,&H73,&H78,&H49,&H42,&H5F,&H54,_
  71. &HF7,&HFC,&HE1,&HEA,&HDB,&HD0,&HCD,&HC6,&HAF,&HA4,&HB9,&HB2,&H83,&H88,&H95,&H9E,_
  72. &H47,&H4C,&H51,&H5A,&H6B,&H60,&H7D,&H76,&H1F,&H14,&H9,&H2,&H33,&H38,&H25,&H2E,_
  73. &H8C,&H87,&H9A,&H91,&HA0,&HAB,&HB6,&HBD,&HD4,&HDF,&HC2,&HC9,&HF8,&HF3,&HEE,&HE5,_
  74. &H3C,&H37,&H2A,&H21,&H10,&H1B,&H6,&HD,&H64,&H6F,&H72,&H79,&H48,&H43,&H5E,&H55,_
  75. &H1,&HA,&H17,&H1C,&H2D,&H26,&H3B,&H30,&H59,&H52,&H4F,&H44,&H75,&H7E,&H63,&H68,_
  76. &HB1,&HBA,&HA7,&HAC,&H9D,&H96,&H8B,&H80,&HE9,&HE2,&HFF,&HF4,&HC5,&HCE,&HD3,&HD8,_
  77. &H7A,&H71,&H6C,&H67,&H56,&H5D,&H40,&H4B,&H22,&H29,&H34,&H3F,&HE,&H5,&H18,&H13,_
  78. &HCA,&HC1,&HDC,&HD7,&HE6,&HED,&HF0,&HFB,&H92,&H99,&H84,&H8F,&HBE,&HB5,&HA8,&HA3)
  79. g13=Array(_
  80. &H0,&HD,&H1A,&H17,&H34,&H39,&H2E,&H23,&H68,&H65,&H72,&H7F,&H5C,&H51,&H46,&H4B,_
  81. &HD0,&HDD,&HCA,&HC7,&HE4,&HE9,&HFE,&HF3,&HB8,&HB5,&HA2,&HAF,&H8C,&H81,&H96,&H9B,_
  82. &HBB,&HB6,&HA1,&HAC,&H8F,&H82,&H95,&H98,&HD3,&HDE,&HC9,&HC4,&HE7,&HEA,&HFD,&HF0,_
  83. &H6B,&H66,&H71,&H7C,&H5F,&H52,&H45,&H48,&H3,&HE,&H19,&H14,&H37,&H3A,&H2D,&H20,_
  84. &H6D,&H60,&H77,&H7A,&H59,&H54,&H43,&H4E,&H5,&H8,&H1F,&H12,&H31,&H3C,&H2B,&H26,_
  85. &HBD,&HB0,&HA7,&HAA,&H89,&H84,&H93,&H9E,&HD5,&HD8,&HCF,&HC2,&HE1,&HEC,&HFB,&HF6,_
  86. &HD6,&HDB,&HCC,&HC1,&HE2,&HEF,&HF8,&HF5,&HBE,&HB3,&HA4,&HA9,&H8A,&H87,&H90,&H9D,_
  87. &H6,&HB,&H1C,&H11,&H32,&H3F,&H28,&H25,&H6E,&H63,&H74,&H79,&H5A,&H57,&H40,&H4D,_
  88. &HDA,&HD7,&HC0,&HCD,&HEE,&HE3,&HF4,&HF9,&HB2,&HBF,&HA8,&HA5,&H86,&H8B,&H9C,&H91,_
  89. &HA,&H7,&H10,&H1D,&H3E,&H33,&H24,&H29,&H62,&H6F,&H78,&H75,&H56,&H5B,&H4C,&H41,_
  90. &H61,&H6C,&H7B,&H76,&H55,&H58,&H4F,&H42,&H9,&H4,&H13,&H1E,&H3D,&H30,&H27,&H2A,_
  91. &HB1,&HBC,&HAB,&HA6,&H85,&H88,&H9F,&H92,&HD9,&HD4,&HC3,&HCE,&HED,&HE0,&HF7,&HFA,_
  92. &HB7,&HBA,&HAD,&HA0,&H83,&H8E,&H99,&H94,&HDF,&HD2,&HC5,&HC8,&HEB,&HE6,&HF1,&HFC,_
  93. &H67,&H6A,&H7D,&H70,&H53,&H5E,&H49,&H44,&HF,&H2,&H15,&H18,&H3B,&H36,&H21,&H2C,_
  94. &HC,&H1,&H16,&H1B,&H38,&H35,&H22,&H2F,&H64,&H69,&H7E,&H73,&H50,&H5D,&H4A,&H47,_
  95. &HDC,&HD1,&HC6,&HCB,&HE8,&HE5,&HF2,&HFF,&HB4,&HB9,&HAE,&HA3,&H80,&H8D,&H9A,&H97)
  96. g14=Array(_
  97. &H0,&HE,&H1C,&H12,&H38,&H36,&H24,&H2A,&H70,&H7E,&H6C,&H62,&H48,&H46,&H54,&H5A,_
  98. &HE0,&HEE,&HFC,&HF2,&HD8,&HD6,&HC4,&HCA,&H90,&H9E,&H8C,&H82,&HA8,&HA6,&HB4,&HBA,_
  99. &HDB,&HD5,&HC7,&HC9,&HE3,&HED,&HFF,&HF1,&HAB,&HA5,&HB7,&HB9,&H93,&H9D,&H8F,&H81,_
  100. &H3B,&H35,&H27,&H29,&H3,&HD,&H1F,&H11,&H4B,&H45,&H57,&H59,&H73,&H7D,&H6F,&H61,_
  101. &HAD,&HA3,&HB1,&HBF,&H95,&H9B,&H89,&H87,&HDD,&HD3,&HC1,&HCF,&HE5,&HEB,&HF9,&HF7,_
  102. &H4D,&H43,&H51,&H5F,&H75,&H7B,&H69,&H67,&H3D,&H33,&H21,&H2F,&H5,&HB,&H19,&H17,_
  103. &H76,&H78,&H6A,&H64,&H4E,&H40,&H52,&H5C,&H6,&H8,&H1A,&H14,&H3E,&H30,&H22,&H2C,_
  104. &H96,&H98,&H8A,&H84,&HAE,&HA0,&HB2,&HBC,&HE6,&HE8,&HFA,&HF4,&HDE,&HD0,&HC2,&HCC,_
  105. &H41,&H4F,&H5D,&H53,&H79,&H77,&H65,&H6B,&H31,&H3F,&H2D,&H23,&H9,&H7,&H15,&H1B,_
  106. &HA1,&HAF,&HBD,&HB3,&H99,&H97,&H85,&H8B,&HD1,&HDF,&HCD,&HC3,&HE9,&HE7,&HF5,&HFB,_
  107. &H9A,&H94,&H86,&H88,&HA2,&HAC,&HBE,&HB0,&HEA,&HE4,&HF6,&HF8,&HD2,&HDC,&HCE,&HC0,_
  108. &H7A,&H74,&H66,&H68,&H42,&H4C,&H5E,&H50,&HA,&H4,&H16,&H18,&H32,&H3C,&H2E,&H20,_
  109. &HEC,&HE2,&HF0,&HFE,&HD4,&HDA,&HC8,&HC6,&H9C,&H92,&H80,&H8E,&HA4,&HAA,&HB8,&HB6,_
  110. &HC,&H2,&H10,&H1E,&H34,&H3A,&H28,&H26,&H7C,&H72,&H60,&H6E,&H44,&H4A,&H58,&H56,_
  111. &H37,&H39,&H2B,&H25,&HF,&H1,&H13,&H1D,&H47,&H49,&H5B,&H55,&H7F,&H71,&H63,&H6D,_
  112. &HD7,&HD9,&HCB,&HC5,&HEF,&HE1,&HF3,&HFD,&HA7,&HA9,&HBB,&HB5,&H9F,&H91,&H83,&H8D)
  113. sbox=Array(&H63,&H7C,&H77,&H7B,&HF2,&H6B,&H6F,&HC5,&H30,&H1,&H67,&H2B,&HFE,&HD7,&HAB,&H76,_
  114. &HCA,&H82,&HC9,&H7D,&HFA,&H59,&H47,&HF0,&HAD,&HD4,&HA2,&HAF,&H9C,&HA4,&H72,&HC0,_
  115. &HB7,&HFD,&H93,&H26,&H36,&H3F,&HF7,&HCC,&H34,&HA5,&HE5,&HF1,&H71,&HD8,&H31,&H15,_
  116. &H4,&HC7,&H23,&HC3,&H18,&H96,&H5,&H9A,&H7,&H12,&H80,&HE2,&HEB,&H27,&HB2,&H75,_
  117. &H9,&H83,&H2C,&H1A,&H1B,&H6E,&H5A,&HA0,&H52,&H3B,&HD6,&HB3,&H29,&HE3,&H2F,&H84,_
  118. &H53,&HD1,&H0,&HED,&H20,&HFC,&HB1,&H5B,&H6A,&HCB,&HBE,&H39,&H4A,&H4C,&H58,&HCF,_
  119. &HD0,&HEF,&HAA,&HFB,&H43,&H4D,&H33,&H85,&H45,&HF9,&H2,&H7F,&H50,&H3C,&H9F,&HA8,_
  120. &H51,&HA3,&H40,&H8F,&H92,&H9D,&H38,&HF5,&HBC,&HB6,&HDA,&H21,&H10,&HFF,&HF3,&HD2,_
  121. &HCD,&HC,&H13,&HEC,&H5F,&H97,&H44,&H17,&HC4,&HA7,&H7E,&H3D,&H64,&H5D,&H19,&H73,_
  122. &H60,&H81,&H4F,&HDC,&H22,&H2A,&H90,&H88,&H46,&HEE,&HB8,&H14,&HDE,&H5E,&HB,&HDB,_
  123. &HE0,&H32,&H3A,&HA,&H49,&H6,&H24,&H5C,&HC2,&HD3,&HAC,&H62,&H91,&H95,&HE4,&H79,_
  124. &HE7,&HC8,&H37,&H6D,&H8D,&HD5,&H4E,&HA9,&H6C,&H56,&HF4,&HEA,&H65,&H7A,&HAE,&H8,_
  125. &HBA,&H78,&H25,&H2E,&H1C,&HA6,&HB4,&HC6,&HE8,&HDD,&H74,&H1F,&H4B,&HBD,&H8B,&H8A,_
  126. &H70,&H3E,&HB5,&H66,&H48,&H3,&HF6,&HE,&H61,&H35,&H57,&HB9,&H86,&HC1,&H1D,&H9E,_
  127. &HE1,&HF8,&H98,&H11,&H69,&HD9,&H8E,&H94,&H9B,&H1E,&H87,&HE9,&HCE,&H55,&H28,&HDF,_
  128. &H8C,&HA1,&H89,&HD,&HBF,&HE6,&H42,&H68,&H41,&H99,&H2D,&HF,&HB0,&H54,&HBB,&H16)
  129. sboxinv=Array(_
  130. &H52,&H9,&H6A,&HD5,&H30,&H36,&HA5,&H38,&HBF,&H40,&HA3,&H9E,&H81,&HF3,&HD7,&HFB,_
  131. &H7C,&HE3,&H39,&H82,&H9B,&H2F,&HFF,&H87,&H34,&H8E,&H43,&H44,&HC4,&HDE,&HE9,&HCB,_
  132. &H54,&H7B,&H94,&H32,&HA6,&HC2,&H23,&H3D,&HEE,&H4C,&H95,&HB,&H42,&HFA,&HC3,&H4E,_
  133. &H8,&H2E,&HA1,&H66,&H28,&HD9,&H24,&HB2,&H76,&H5B,&HA2,&H49,&H6D,&H8B,&HD1,&H25,_
  134. &H72,&HF8,&HF6,&H64,&H86,&H68,&H98,&H16,&HD4,&HA4,&H5C,&HCC,&H5D,&H65,&HB6,&H92,_
  135. &H6C,&H70,&H48,&H50,&HFD,&HED,&HB9,&HDA,&H5E,&H15,&H46,&H57,&HA7,&H8D,&H9D,&H84,_
  136. &H90,&HD8,&HAB,&H0,&H8C,&HBC,&HD3,&HA,&HF7,&HE4,&H58,&H5,&HB8,&HB3,&H45,&H6,_
  137. &HD0,&H2C,&H1E,&H8F,&HCA,&H3F,&HF,&H2,&HC1,&HAF,&HBD,&H3,&H1,&H13,&H8A,&H6B,_
  138. &H3A,&H91,&H11,&H41,&H4F,&H67,&HDC,&HEA,&H97,&HF2,&HCF,&HCE,&HF0,&HB4,&HE6,&H73,_
  139. &H96,&HAC,&H74,&H22,&HE7,&HAD,&H35,&H85,&HE2,&HF9,&H37,&HE8,&H1C,&H75,&HDF,&H6E,_
  140. &H47,&HF1,&H1A,&H71,&H1D,&H29,&HC5,&H89,&H6F,&HB7,&H62,&HE,&HAA,&H18,&HBE,&H1B,_
  141. &HFC,&H56,&H3E,&H4B,&HC6,&HD2,&H79,&H20,&H9A,&HDB,&HC0,&HFE,&H78,&HCD,&H5A,&HF4,_
  142. &H1F,&HDD,&HA8,&H33,&H88,&H7,&HC7,&H31,&HB1,&H12,&H10,&H59,&H27,&H80,&HEC,&H5F,_
  143. &H60,&H51,&H7F,&HA9,&H19,&HB5,&H4A,&HD,&H2D,&HE5,&H7A,&H9F,&H93,&HC9,&H9C,&HEF,_
  144. &HA0,&HE0,&H3B,&H4D,&HAE,&H2A,&HF5,&HB0,&HC8,&HEB,&HBB,&H3C,&H83,&H53,&H99,&H61,_
  145. &H17,&H2B,&H4,&H7E,&HBA,&H77,&HD6,&H26,&HE1,&H69,&H14,&H63,&H55,&H21,&HC,&H7D)
  146. rcon=Array(_
  147. &H8D,&H1,&H2,&H4,&H8,&H10,&H20,&H40,&H80,&H1B,&H36,&H6C,&HD8,&HAB,&H4D,&H9A,_
  148. &H2F,&H5E,&HBC,&H63,&HC6,&H97,&H35,&H6A,&HD4,&HB3,&H7D,&HFA,&HEF,&HC5,&H91,&H39,_
  149. &H72,&HE4,&HD3,&HBD,&H61,&HC2,&H9F,&H25,&H4A,&H94,&H33,&H66,&HCC,&H83,&H1D,&H3A,_
  150. &H74,&HE8,&HCB,&H8D,&H1,&H2,&H4,&H8,&H10,&H20,&H40,&H80,&H1B,&H36,&H6C,&HD8,_
  151. &HAB,&H4D,&H9A,&H2F,&H5E,&HBC,&H63,&HC6,&H97,&H35,&H6A,&HD4,&HB3,&H7D,&HFA,&HEF,_
  152. &HC5,&H91,&H39,&H72,&HE4,&HD3,&HBD,&H61,&HC2,&H9F,&H25,&H4A,&H94,&H33,&H66,&HCC,_
  153. &H83,&H1D,&H3A,&H74,&HE8,&HCB,&H8D,&H1,&H2,&H4,&H8,&H10,&H20,&H40,&H80,&H1B,_
  154. &H36,&H6C,&HD8,&HAB,&H4D,&H9A,&H2F,&H5E,&HBC,&H63,&HC6,&H97,&H35,&H6A,&HD4,&HB3,_
  155. &H7D,&HFA,&HEF,&HC5,&H91,&H39,&H72,&HE4,&HD3,&HBD,&H61,&HC2,&H9F,&H25,&H4A,&H94,_
  156. &H33,&H66,&HCC,&H83,&H1D,&H3A,&H74,&HE8,&HCB,&H8D,&H1,&H2,&H4,&H8,&H10,&H20,_
  157. &H40,&H80,&H1B,&H36,&H6C,&HD8,&HAB,&H4D,&H9A,&H2F,&H5E,&HBC,&H63,&HC6,&H97,&H35,_
  158. &H6A,&HD4,&HB3,&H7D,&HFA,&HEF,&HC5,&H91,&H39,&H72,&HE4,&HD3,&HBD,&H61,&HC2,&H9F,_
  159. &H25,&H4A,&H94,&H33,&H66,&HCC,&H83,&H1D,&H3A,&H74,&HE8,&HCB,&H8D,&H1,&H2,&H4,_
  160. &H8,&H10,&H20,&H40,&H80,&H1B,&H36,&H6C,&HD8,&HAB,&H4D,&H9A,&H2F,&H5E,&HBC,&H63,_
  161. &HC6,&H97,&H35,&H6A,&HD4,&HB3,&H7D,&HFA,&HEF,&HC5,&H91,&H39,&H72,&HE4,&HD3,&HBD,_
  162. &H61,&HC2,&H9F,&H25,&H4A,&H94,&H33,&H66,&HCC,&H83,&H1D,&H3A,&H74,&HE8,&HCB)
  163. DimexpandedKey,block(16),aesKey(32),i,isDone,j,isEncode
  164. DimsPlain,sPass,sCipher,sTemp
  165. Dimx,r,y,temp(4),intTemp
  166. '<<<MOD=Addedthefollowingconstants
  167. Constforreading=1,forwriting=2,forappend=8
  168. '>>>
  169. '<<MOD
  170. sPass=sPassIn
  171. '>>
  172. '<<Modchangedthefollowingline
  173. 'Fori=0To(Len(oPW.value)-1)
  174. '
  175. Fori=0To(Len(sPass)-1)
  176. '>>
  177. '<<Modchangedthefollowingline
  178. 'aesKey(i)=Asc(Mid(oPW.value,i+1,1))
  179. aesKey(i)=Asc(Mid(sPass,i+1,1))
  180. '>>>
  181. Next
  182. '<<Modchangedthefollowingline
  183. 'Fori=Len(oPW.value)To31
  184. Fori=Len(sPass)To31
  185. '>>
  186. aesKey(i)=0
  187. Next
  188. 'missingsbox
  189. expandedKey=expandKey(aesKey,sbox,rcon)
  190. Fory=1To5
  191. sPlain=Range("A"&y)
  192. sCipher=""
  193. j=0
  194. isDone=False
  195. DoUntilisDone
  196. sTemp=Mid(sPlain,j*16+1,16)
  197. IfLen(sTemp)<16Then
  198. Fori=Len(sTemp)To15
  199. sTemp=sTemp&Chr(0)
  200. Next
  201. EndIf
  202. Fori=0To15
  203. block(i)=Asc(Mid(sTemp,(iMod4)*4+(i\4)+1,1))
  204. Next
  205. If(j+1)*16>=Len(sPlain)Then
  206. isDone=True
  207. EndIf
  208. j=j+1
  209. IfisEncodeThen
  210. r=0
  211. Fori=0To15
  212. block(i)=block(i)XorexpandedKey((iMod4)*4+(i\4))
  213. Next
  214. Forx=1To13
  215. block(0)=sbox(block(0))
  216. block(1)=sbox(block(1))
  217. block(2)=sbox(block(2))
  218. block(3)=sbox(block(3))
  219. intTemp=sbox(block(4))
  220. block(4)=sbox(block(5))
  221. block(5)=sbox(block(6))
  222. block(6)=sbox(block(7))
  223. block(7)=intTemp
  224. intTemp=sbox(block(8))
  225. block(8)=sbox(block(10))
  226. block(10)=intTemp
  227. intTemp=sbox(block(9))
  228. block(9)=sbox(block(11))
  229. block(11)=intTemp
  230. intTemp=sbox(block(12))
  231. block(12)=sbox(block(15))
  232. block(15)=sbox(block(14))
  233. block(14)=sbox(block(13))
  234. block(13)=intTemp
  235. r=x*16
  236. Fori=0To3
  237. temp(0)=block(i)
  238. temp(1)=block(i+4)
  239. temp(2)=block(i+8)
  240. temp(3)=block(i+12)
  241. block(i)=g2(temp(0))Xortemp(3)Xortemp(2)Xorg3(temp(1))XorexpandedKey(r+i*4)
  242. block(i+4)=g2(temp(1))Xortemp(0)Xortemp(3)Xorg3(temp(2))XorexpandedKey(r+i*4+1)
  243. block(i+8)=g2(temp(2))Xortemp(1)Xortemp(0)Xorg3(temp(3))XorexpandedKey(r+i*4+2)
  244. block(i+12)=g2(temp(3))Xortemp(2)Xortemp(1)Xorg3(temp(0))XorexpandedKey(r+i*4+3)
  245. Next
  246. Next
  247. block(0)=sbox(block(0))XorexpandedKey(224)
  248. block(1)=sbox(block(1))XorexpandedKey(228)
  249. block(2)=sbox(block(2))XorexpandedKey(232)
  250. block(3)=sbox(block(3))XorexpandedKey(236)
  251. intTemp=sbox(block(4))XorexpandedKey(237)
  252. block(4)=sbox(block(5))XorexpandedKey(225)
  253. block(5)=sbox(block(6))XorexpandedKey(229)
  254. block(6)=sbox(block(7))XorexpandedKey(233)
  255. block(7)=intTemp
  256. intTemp=sbox(block(8))XorexpandedKey(234)
  257. block(8)=sbox(block(10))XorexpandedKey(226)
  258. block(10)=intTemp
  259. intTemp=sbox(block(9))XorexpandedKey(238)
  260. block(9)=sbox(block(11))XorexpandedKey(230)
  261. block(11)=intTemp
  262. intTemp=sbox(block(12))XorexpandedKey(231)
  263. block(12)=sbox(block(15))XorexpandedKey(227)
  264. block(15)=sbox(block(14))XorexpandedKey(239)
  265. block(14)=sbox(block(13))XorexpandedKey(235)
  266. block(13)=intTemp
  267. Else
  268. block(0)=sboxinv(block(0)XorexpandedKey(224))
  269. block(1)=sboxinv(block(1)XorexpandedKey(228))
  270. block(2)=sboxinv(block(2)XorexpandedKey(232))
  271. block(3)=sboxinv(block(3)XorexpandedKey(236))
  272. intTemp=sboxinv(block(4)XorexpandedKey(225))
  273. block(4)=sboxinv(block(7)XorexpandedKey(237))
  274. block(7)=sboxinv(block(6)XorexpandedKey(233))
  275. block(6)=sboxinv(block(5)XorexpandedKey(229))
  276. block(5)=intTemp
  277. intTemp=sboxinv(block(8)XorexpandedKey(226))
  278. block(8)=sboxinv(block(10)XorexpandedKey(234))
  279. block(10)=intTemp
  280. intTemp=sboxinv(block(9)XorexpandedKey(230))
  281. block(9)=sboxinv(block(11)XorexpandedKey(238))
  282. block(11)=intTemp
  283. intTemp=sboxinv(block(12)XorexpandedKey(227))
  284. block(12)=sboxinv(block(13)XorexpandedKey(231))
  285. block(13)=sboxinv(block(14)XorexpandedKey(235))
  286. block(14)=sboxinv(block(15)XorexpandedKey(239))
  287. block(15)=intTemp
  288. Forx=13To1Step-1
  289. r=x*16
  290. Fori=0To3
  291. temp(0)=block(i)XorexpandedKey(r+i*4)
  292. temp(1)=block(i+4)XorexpandedKey(r+i*4+1)
  293. temp(2)=block(i+8)XorexpandedKey(r+i*4+2)
  294. temp(3)=block(i+12)XorexpandedKey(r+i*4+3)
  295. block(i)=g14(temp(0))Xorg9(temp(3))Xorg13(temp(2))Xorg11(temp(1))
  296. block(i+4)=g14(temp(1))Xorg9(temp(0))Xorg13(temp(3))Xorg11(temp(2))
  297. block(i+8)=g14(temp(2))Xorg9(temp(1))Xorg13(temp(0))Xorg11(temp(3))
  298. block(i+12)=g14(temp(3))Xorg9(temp(2))Xorg13(temp(1))Xorg11(temp(0))
  299. Next
  300. block(0)=sboxinv(block(0))
  301. block(1)=sboxinv(block(1))
  302. block(2)=sboxinv(block(2))
  303. block(3)=sboxinv(block(3))
  304. intTemp=sboxinv(block(4))
  305. block(4)=sboxinv(block(7))
  306. block(7)=sboxinv(block(6))
  307. block(6)=sboxinv(block(5))
  308. block(5)=intTemp
  309. intTemp=sboxinv(block(8))
  310. block(8)=sboxinv(block(10))
  311. block(10)=intTemp
  312. intTemp=sboxinv(block(9))
  313. block(9)=sboxinv(block(11))
  314. block(11)=intTemp
  315. intTemp=sboxinv(block(12))
  316. block(12)=sboxinv(block(13))
  317. block(13)=sboxinv(block(14))
  318. block(14)=sboxinv(block(15))
  319. block(15)=intTemp
  320. Next
  321. r=0
  322. Fori=0To15
  323. block(i)=block(i)XorexpandedKey((iMod4)*4+(i\4))
  324. Next
  325. EndIf
  326. Fori=0To15
  327. sCipher=sCipher&Chr(block((iMod4)*4+(i\4)))
  328. Next
  329. Loop
  330. Range("B"&y)=sCipher
  331. Next
  332. EndSub
  333. FunctionkeyScheduleCore(ByRefrow(),ByVala,ByRefbox(),ByRefrcon())
  334. Dimresult(4),i
  335. Fori=0To3
  336. result(i)=box(row((i+5)Mod4))
  337. Next
  338. result(0)=result(0)Xorrcon(a)
  339. keyScheduleCore=result
  340. EndFunction
  341. FunctionexpandKey(ByRefkey(),ByRefbox(),ByRefrcon())
  342. 'MODadded()toarrayvariables
  343. DimrConIter,temp(),i,result(240)
  344. ReDimtemp(4)
  345. rConIter=1
  346. Fori=0To31
  347. result(i)=key(i)
  348. Next
  349. Fori=32To239Step4
  350. temp(0)=result(i-4)
  351. temp(1)=result(i-3)
  352. temp(2)=result(i-2)
  353. temp(3)=result(i-1)
  354. IfiMod32=0Then
  355. temp=keyScheduleCore(temp,rConIter,box,rcon)
  356. rConIter=rConIter+1
  357. EndIf
  358. IfiMod32=16Then
  359. temp(0)=box(temp(0))
  360. temp(1)=box(temp(1))
  361. temp(2)=box(temp(2))
  362. temp(3)=box(temp(3))
  363. EndIf
  364. result(i)=result(i-32)Xortemp(0)
  365. result(i+1)=result(i-31)Xortemp(1)
  366. result(i+2)=result(i-30)Xortemp(2)
  367. result(i+3)=result(i-29)Xortemp(3)
  368. Next
  369. expandKey=result
  370. EndFunction
  371. FunctionRunAES_Click()
  372. AES_ECB("TestKey9")
  373. EndFunction

However, the "encrypted" strings don't appear to be valid, full of gibberish characters and not matching any online AES encryption tools.

Is there anything I am doing wrong here?

Nov 11 '16 #1

Subscribe Reply

1 Need Help with AES ECB Encryption in VBA | Bytes (2) 1139 Need Help with AES ECB Encryption in VBA | Bytes (3)

codinginterview

1 Need Help with AES ECB Encryption in VBA | Bytes (4) New Member

Can you not use some library to encrypt?

Nov 11 '16 #2

reply

Sign in to post your reply or Sign up for a free account.

Similar topics

1 7125

Oracle ODBC error with ENCRYPTION

by: Cliff |last post by:

We are trying to connect to 3 different Oracle databases using MS Access as the front-end and ODBC as the connection. The problem that we are having is that 1 of the databases requires a CRYPTO_SEED. With the sqlnet.ora file configured for the encryption, the other 2 databases won't connect and vise versa. Is there a way to make the...

Oracle Database

10 2315

a problem with encryption

by: crawlerxp |last post by:

This is the problem: I do not get the output I need when encoding and decoding data using rijndael alghoritm. Look at the code and see what the problem is actually: Please paste this code into your Visual Studio and compile it + run it; so you can see what the actual problem is. Thanks. code:

.NET Framework

7 2806

is WITH ENCRYPTION now safe in SQL2005?

by: helmut woess |last post by:

Hi, has anybody knowledge about the safetyness of encrypting stored procs in SQL-Server 2005 using WITH ENCRYPTION? Or can they be hacked with the same old tools which exists for SQL 2000? thanks, Helmut

Microsoft SQL Server

3 2775

Asp.net 2.0 deployment with encryption

by: Chuck P |last post by:

I need to deploy and asp.net 2.0 application that has dpapi/machine encrypted connection strings. I tried using the VS Build Publish menu selection and then putting the encryption in the global.asax application_start event. Unfortunately this errors because the asp.net account doesn't have write permissions to web.config. I'd rather not...

ASP.NET

1 1792

Real-time with encryption possible with browser-based app on an Intranet using .NET?

by: polaris431 |last post by:

I would like to obtain encypted data over a network in real-time. The nature of the data and process is as follows... A physical hardware device is located at some remote location. When the sensor gets activated, it must notify an operator at a remote facility within seconds (probably no less than 2 seconds). The device is attached to some...

C# / C Sharp

3 2125

Computer to Computer Video teleconferencing software with encryption

by: john.f.klein |last post by:

I want to be able to contact my wife via video teleconferencing and see and talk to her and our new baby. For this purpose, I need software and hardware that can allow me to do with secure and privacy. As soon we talk of video, anyone, from the ISP to anyone who can snoop, record and store the content for any latter mischief can work on...

C / C++

3 2048

Help need in Encryption/Decryption Concepts

by: OraMaster |last post by:

Please have a look on below statements 1. encryption is useful to protect against the THEFT of data 2. encryption is not what you use to prevent ACCESS to data. I think if unauthorized access happens of encrypted data then ultimately it is THEFT. Now my question is how encryption is useful to protect against the THEFT of data?

Oracle Database

6 1855

Need of encryption in My project.

by: Parul Bagadia |last post by:

Hello, I am doing a project in USB OVER IP, which is about sharing a remote USB device from your workstation, for ex. say two PCs are connected by LAN and a scanner is attached to one PC and user sitting at other workstation can access that scanner ; and all of its functionality. We will be implementing it in Device Driver, so that it wont...

Networking - Hardware / Configuration

2 1634

how to send email attachments with encryption

by: vffg5555555555 |last post by:

how to send email attachments with encryption

ASP.NET

7201

Changing the language in Windows 10

by: Hystou |last post by:

Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...

Windows Server

7438

Problem With Comparison Operator <=> in G++

by: Oralloy |last post by:

Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...

C / C++

7559

Discussion: How does Zigbee compare with other wireless protocols in smart home applications?

by: tracyyun |last post by:

Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...

General

5740

AI Job Threat for Devs

by: agi2029 |last post by:

Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...

Career Advice

1 5125

Access Europe - Using VBA to create a class based on a table - Wed 1 May

by: isladogs |last post by:

The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...

Microsoft Access / VBA

3282

Trying to create a lan-to-lan vpn between two differents networks

by: TSSRALBI |last post by:

Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...

Networking - Hardware / Configuration

1646

transfer the data from one system to another through ip address

by: 6302768590 |last post by:

Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

C# / C Sharp

1 836

How to add payments to a PHP MySQL app.

by: muto222 |last post by:

How can i add a mobile payment intergratation into php mysql website.

PHP

506

Comprehensive Guide to Website Development in Toronto: Expert Insights from BSMN Consultancy

by: bsmnconsultancy |last post by:

In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

General

Need Help with AES ECB Encryption in VBA | Bytes (2024)
Top Articles
Latest Posts
Article information

Author: Duane Harber

Last Updated:

Views: 6084

Rating: 4 / 5 (51 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Duane Harber

Birthday: 1999-10-17

Address: Apt. 404 9899 Magnolia Roads, Port Royceville, ID 78186

Phone: +186911129794335

Job: Human Hospitality Planner

Hobby: Listening to music, Orienteering, Knapping, Dance, Mountain biking, Fishing, Pottery

Introduction: My name is Duane Harber, I am a modern, clever, handsome, fair, agreeable, inexpensive, beautiful person who loves writing and wants to share my knowledge and understanding with you.