473,398 Members | 2,427 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,398 software developers and data experts.

"Rabbit's" AES Algorithm Works for Max. 16 Chars

3
Hi all.

I am using code (see below) based on Rabbits AES Algorithm (AES Encryption Algorithm for VBA and VBScript). It's not the original code posted by Rabbit, but I liked the fact, that I can en-/decrypt strings with it, rather than files and it was already in VBA. Now what's not working is that if I try to en-/decrypt strings longer than 16 chars it won't work. This the output of the immediate window:
Expand|Select|Wrap|Line Numbers
  1. ? endecryptaes(endecryptaes("a16char-long-str",1,"12345678"),0,"12345678")
  2. a16char-long-str
  3. ? endecryptaes(endecryptaes("a17char-long-str1",1,"12345678"),0,"12345678")
  4. a17char-long-str’¢ZG`‡Ýä»"ë8×
As you see the first 16 chars are en- and decrypted correctly, but if I add just one character it's not working anymore.

I hope someone has an idea as I really like the code and unfortunately I already have encrypted a lot of passwords (<=16 chars) with it...
Expand|Select|Wrap|Line Numbers
  1. Option Compare Database
  2. Option Explicit
  3.  
  4. Function EnDeCryptAES(sText As String, bMode As Byte, sKey As String) As String
  5.   '' Based on :
  6.   '' http://bytes.com/topic/access/insights/906850-aes-encryption-algorithm-vba-vbscript
  7.   '' sText : string to en/decrypt
  8.   '' sKey  : encryption key
  9.   '' bMode : 0 = decrypt, 1 = encrypt
  10.   Dim sbox(), sboxinv(), rcon()
  11.   Dim g2, g3, g9, g11, g13, g14
  12.  
  13.     g2 = Array( _
  14.         &H0, &H2, &H4, &H6, &H8, &HA, &HC, &HE, &H10, &H12, &H14, &H16, &H18, &H1A, &H1C, &H1E, _
  15.         &H20, &H22, &H24, &H26, &H28, &H2A, &H2C, &H2E, &H30, &H32, &H34, &H36, &H38, &H3A, &H3C, &H3E, _
  16.         &H40, &H42, &H44, &H46, &H48, &H4A, &H4C, &H4E, &H50, &H52, &H54, &H56, &H58, &H5A, &H5C, &H5E, _
  17.         &H60, &H62, &H64, &H66, &H68, &H6A, &H6C, &H6E, &H70, &H72, &H74, &H76, &H78, &H7A, &H7C, &H7E, _
  18.         &H80, &H82, &H84, &H86, &H88, &H8A, &H8C, &H8E, &H90, &H92, &H94, &H96, &H98, &H9A, &H9C, &H9E, _
  19.         &HA0, &HA2, &HA4, &HA6, &HA8, &HAA, &HAC, &HAE, &HB0, &HB2, &HB4, &HB6, &HB8, &HBA, &HBC, &HBE, _
  20.         &HC0, &HC2, &HC4, &HC6, &HC8, &HCA, &HCC, &HCE, &HD0, &HD2, &HD4, &HD6, &HD8, &HDA, &HDC, &HDE, _
  21.         &HE0, &HE2, &HE4, &HE6, &HE8, &HEA, &HEC, &HEE, &HF0, &HF2, &HF4, &HF6, &HF8, &HFA, &HFC, &HFE, _
  22.         &H1B, &H19, &H1F, &H1D, &H13, &H11, &H17, &H15, &HB, &H9, &HF, &HD, &H3, &H1, &H7, &H5, _
  23.         &H3B, &H39, &H3F, &H3D, &H33, &H31, &H37, &H35, &H2B, &H29, &H2F, &H2D, &H23, &H21, &H27, &H25, _
  24.         &H5B, &H59, &H5F, &H5D, &H53, &H51, &H57, &H55, &H4B, &H49, &H4F, &H4D, &H43, &H41, &H47, &H45, _
  25.         &H7B, &H79, &H7F, &H7D, &H73, &H71, &H77, &H75, &H6B, &H69, &H6F, &H6D, &H63, &H61, &H67, &H65, _
  26.         &H9B, &H99, &H9F, &H9D, &H93, &H91, &H97, &H95, &H8B, &H89, &H8F, &H8D, &H83, &H81, &H87, &H85, _
  27.         &HBB, &HB9, &HBF, &HBD, &HB3, &HB1, &HB7, &HB5, &HAB, &HA9, &HAF, &HAD, &HA3, &HA1, &HA7, &HA5, _
  28.         &HDB, &HD9, &HDF, &HDD, &HD3, &HD1, &HD7, &HD5, &HCB, &HC9, &HCF, &HCD, &HC3, &HC1, &HC7, &HC5, _
  29.         &HFB, &HF9, &HFF, &HFD, &HF3, &HF1, &HF7, &HF5, &HEB, &HE9, &HEF, &HED, &HE3, &HE1, &HE7, &HE5)
  30.  
  31.     g3 = Array( _
  32.         &H0, &H3, &H6, &H5, &HC, &HF, &HA, &H9, &H18, &H1B, &H1E, &H1D, &H14, &H17, &H12, &H11, _
  33.         &H30, &H33, &H36, &H35, &H3C, &H3F, &H3A, &H39, &H28, &H2B, &H2E, &H2D, &H24, &H27, &H22, &H21, _
  34.         &H60, &H63, &H66, &H65, &H6C, &H6F, &H6A, &H69, &H78, &H7B, &H7E, &H7D, &H74, &H77, &H72, &H71, _
  35.         &H50, &H53, &H56, &H55, &H5C, &H5F, &H5A, &H59, &H48, &H4B, &H4E, &H4D, &H44, &H47, &H42, &H41, _
  36.         &HC0, &HC3, &HC6, &HC5, &HCC, &HCF, &HCA, &HC9, &HD8, &HDB, &HDE, &HDD, &HD4, &HD7, &HD2, &HD1, _
  37.         &HF0, &HF3, &HF6, &HF5, &HFC, &HFF, &HFA, &HF9, &HE8, &HEB, &HEE, &HED, &HE4, &HE7, &HE2, &HE1, _
  38.         &HA0, &HA3, &HA6, &HA5, &HAC, &HAF, &HAA, &HA9, &HB8, &HBB, &HBE, &HBD, &HB4, &HB7, &HB2, &HB1, _
  39.         &H90, &H93, &H96, &H95, &H9C, &H9F, &H9A, &H99, &H88, &H8B, &H8E, &H8D, &H84, &H87, &H82, &H81, _
  40.         &H9B, &H98, &H9D, &H9E, &H97, &H94, &H91, &H92, &H83, &H80, &H85, &H86, &H8F, &H8C, &H89, &H8A, _
  41.         &HAB, &HA8, &HAD, &HAE, &HA7, &HA4, &HA1, &HA2, &HB3, &HB0, &HB5, &HB6, &HBF, &HBC, &HB9, &HBA, _
  42.         &HFB, &HF8, &HFD, &HFE, &HF7, &HF4, &HF1, &HF2, &HE3, &HE0, &HE5, &HE6, &HEF, &HEC, &HE9, &HEA, _
  43.         &HCB, &HC8, &HCD, &HCE, &HC7, &HC4, &HC1, &HC2, &HD3, &HD0, &HD5, &HD6, &HDF, &HDC, &HD9, &HDA, _
  44.         &H5B, &H58, &H5D, &H5E, &H57, &H54, &H51, &H52, &H43, &H40, &H45, &H46, &H4F, &H4C, &H49, &H4A, _
  45.         &H6B, &H68, &H6D, &H6E, &H67, &H64, &H61, &H62, &H73, &H70, &H75, &H76, &H7F, &H7C, &H79, &H7A, _
  46.         &H3B, &H38, &H3D, &H3E, &H37, &H34, &H31, &H32, &H23, &H20, &H25, &H26, &H2F, &H2C, &H29, &H2A, _
  47.         &HB, &H8, &HD, &HE, &H7, &H4, &H1, &H2, &H13, &H10, &H15, &H16, &H1F, &H1C, &H19, &H1A)
  48.  
  49.     g9 = Array( _
  50.         &H0, &H9, &H12, &H1B, &H24, &H2D, &H36, &H3F, &H48, &H41, &H5A, &H53, &H6C, &H65, &H7E, &H77, _
  51.         &H90, &H99, &H82, &H8B, &HB4, &HBD, &HA6, &HAF, &HD8, &HD1, &HCA, &HC3, &HFC, &HF5, &HEE, &HE7, _
  52.         &H3B, &H32, &H29, &H20, &H1F, &H16, &HD, &H4, &H73, &H7A, &H61, &H68, &H57, &H5E, &H45, &H4C, _
  53.         &HAB, &HA2, &HB9, &HB0, &H8F, &H86, &H9D, &H94, &HE3, &HEA, &HF1, &HF8, &HC7, &HCE, &HD5, &HDC, _
  54.         &H76, &H7F, &H64, &H6D, &H52, &H5B, &H40, &H49, &H3E, &H37, &H2C, &H25, &H1A, &H13, &H8, &H1, _
  55.         &HE6, &HEF, &HF4, &HFD, &HC2, &HCB, &HD0, &HD9, &HAE, &HA7, &HBC, &HB5, &H8A, &H83, &H98, &H91, _
  56.         &H4D, &H44, &H5F, &H56, &H69, &H60, &H7B, &H72, &H5, &HC, &H17, &H1E, &H21, &H28, &H33, &H3A, _
  57.         &HDD, &HD4, &HCF, &HC6, &HF9, &HF0, &HEB, &HE2, &H95, &H9C, &H87, &H8E, &HB1, &HB8, &HA3, &HAA, _
  58.         &HEC, &HE5, &HFE, &HF7, &HC8, &HC1, &HDA, &HD3, &HA4, &HAD, &HB6, &HBF, &H80, &H89, &H92, &H9B, _
  59.         &H7C, &H75, &H6E, &H67, &H58, &H51, &H4A, &H43, &H34, &H3D, &H26, &H2F, &H10, &H19, &H2, &HB, _
  60.         &HD7, &HDE, &HC5, &HCC, &HF3, &HFA, &HE1, &HE8, &H9F, &H96, &H8D, &H84, &HBB, &HB2, &HA9, &HA0, _
  61.         &H47, &H4E, &H55, &H5C, &H63, &H6A, &H71, &H78, &HF, &H6, &H1D, &H14, &H2B, &H22, &H39, &H30, _
  62.         &H9A, &H93, &H88, &H81, &HBE, &HB7, &HAC, &HA5, &HD2, &HDB, &HC0, &HC9, &HF6, &HFF, &HE4, &HED, _
  63.         &HA, &H3, &H18, &H11, &H2E, &H27, &H3C, &H35, &H42, &H4B, &H50, &H59, &H66, &H6F, &H74, &H7D, _
  64.         &HA1, &HA8, &HB3, &HBA, &H85, &H8C, &H97, &H9E, &HE9, &HE0, &HFB, &HF2, &HCD, &HC4, &HDF, &HD6, _
  65.         &H31, &H38, &H23, &H2A, &H15, &H1C, &H7, &HE, &H79, &H70, &H6B, &H62, &H5D, &H54, &H4F, &H46)
  66.  
  67.     g11 = Array( _
  68.         &H0, &HB, &H16, &H1D, &H2C, &H27, &H3A, &H31, &H58, &H53, &H4E, &H45, &H74, &H7F, &H62, &H69, _
  69.         &HB0, &HBB, &HA6, &HAD, &H9C, &H97, &H8A, &H81, &HE8, &HE3, &HFE, &HF5, &HC4, &HCF, &HD2, &HD9, _
  70.         &H7B, &H70, &H6D, &H66, &H57, &H5C, &H41, &H4A, &H23, &H28, &H35, &H3E, &HF, &H4, &H19, &H12, _
  71.         &HCB, &HC0, &HDD, &HD6, &HE7, &HEC, &HF1, &HFA, &H93, &H98, &H85, &H8E, &HBF, &HB4, &HA9, &HA2, _
  72.         &HF6, &HFD, &HE0, &HEB, &HDA, &HD1, &HCC, &HC7, &HAE, &HA5, &HB8, &HB3, &H82, &H89, &H94, &H9F, _
  73.         &H46, &H4D, &H50, &H5B, &H6A, &H61, &H7C, &H77, &H1E, &H15, &H8, &H3, &H32, &H39, &H24, &H2F, _
  74.         &H8D, &H86, &H9B, &H90, &HA1, &HAA, &HB7, &HBC, &HD5, &HDE, &HC3, &HC8, &HF9, &HF2, &HEF, &HE4, _
  75.         &H3D, &H36, &H2B, &H20, &H11, &H1A, &H7, &HC, &H65, &H6E, &H73, &H78, &H49, &H42, &H5F, &H54, _
  76.         &HF7, &HFC, &HE1, &HEA, &HDB, &HD0, &HCD, &HC6, &HAF, &HA4, &HB9, &HB2, &H83, &H88, &H95, &H9E, _
  77.         &H47, &H4C, &H51, &H5A, &H6B, &H60, &H7D, &H76, &H1F, &H14, &H9, &H2, &H33, &H38, &H25, &H2E, _
  78.         &H8C, &H87, &H9A, &H91, &HA0, &HAB, &HB6, &HBD, &HD4, &HDF, &HC2, &HC9, &HF8, &HF3, &HEE, &HE5, _
  79.         &H3C, &H37, &H2A, &H21, &H10, &H1B, &H6, &HD, &H64, &H6F, &H72, &H79, &H48, &H43, &H5E, &H55, _
  80.         &H1, &HA, &H17, &H1C, &H2D, &H26, &H3B, &H30, &H59, &H52, &H4F, &H44, &H75, &H7E, &H63, &H68, _
  81.         &HB1, &HBA, &HA7, &HAC, &H9D, &H96, &H8B, &H80, &HE9, &HE2, &HFF, &HF4, &HC5, &HCE, &HD3, &HD8, _
  82.         &H7A, &H71, &H6C, &H67, &H56, &H5D, &H40, &H4B, &H22, &H29, &H34, &H3F, &HE, &H5, &H18, &H13, _
  83.         &HCA, &HC1, &HDC, &HD7, &HE6, &HED, &HF0, &HFB, &H92, &H99, &H84, &H8F, &HBE, &HB5, &HA8, &HA3)
  84.  
  85.     g13 = Array( _
  86.         &H0, &HD, &H1A, &H17, &H34, &H39, &H2E, &H23, &H68, &H65, &H72, &H7F, &H5C, &H51, &H46, &H4B, _
  87.         &HD0, &HDD, &HCA, &HC7, &HE4, &HE9, &HFE, &HF3, &HB8, &HB5, &HA2, &HAF, &H8C, &H81, &H96, &H9B, _
  88.         &HBB, &HB6, &HA1, &HAC, &H8F, &H82, &H95, &H98, &HD3, &HDE, &HC9, &HC4, &HE7, &HEA, &HFD, &HF0, _
  89.         &H6B, &H66, &H71, &H7C, &H5F, &H52, &H45, &H48, &H3, &HE, &H19, &H14, &H37, &H3A, &H2D, &H20, _
  90.         &H6D, &H60, &H77, &H7A, &H59, &H54, &H43, &H4E, &H5, &H8, &H1F, &H12, &H31, &H3C, &H2B, &H26, _
  91.         &HBD, &HB0, &HA7, &HAA, &H89, &H84, &H93, &H9E, &HD5, &HD8, &HCF, &HC2, &HE1, &HEC, &HFB, &HF6, _
  92.         &HD6, &HDB, &HCC, &HC1, &HE2, &HEF, &HF8, &HF5, &HBE, &HB3, &HA4, &HA9, &H8A, &H87, &H90, &H9D, _
  93.         &H6, &HB, &H1C, &H11, &H32, &H3F, &H28, &H25, &H6E, &H63, &H74, &H79, &H5A, &H57, &H40, &H4D, _
  94.         &HDA, &HD7, &HC0, &HCD, &HEE, &HE3, &HF4, &HF9, &HB2, &HBF, &HA8, &HA5, &H86, &H8B, &H9C, &H91, _
  95.         &HA, &H7, &H10, &H1D, &H3E, &H33, &H24, &H29, &H62, &H6F, &H78, &H75, &H56, &H5B, &H4C, &H41, _
  96.         &H61, &H6C, &H7B, &H76, &H55, &H58, &H4F, &H42, &H9, &H4, &H13, &H1E, &H3D, &H30, &H27, &H2A, _
  97.         &HB1, &HBC, &HAB, &HA6, &H85, &H88, &H9F, &H92, &HD9, &HD4, &HC3, &HCE, &HED, &HE0, &HF7, &HFA, _
  98.         &HB7, &HBA, &HAD, &HA0, &H83, &H8E, &H99, &H94, &HDF, &HD2, &HC5, &HC8, &HEB, &HE6, &HF1, &HFC, _
  99.         &H67, &H6A, &H7D, &H70, &H53, &H5E, &H49, &H44, &HF, &H2, &H15, &H18, &H3B, &H36, &H21, &H2C, _
  100.         &HC, &H1, &H16, &H1B, &H38, &H35, &H22, &H2F, &H64, &H69, &H7E, &H73, &H50, &H5D, &H4A, &H47, _
  101.         &HDC, &HD1, &HC6, &HCB, &HE8, &HE5, &HF2, &HFF, &HB4, &HB9, &HAE, &HA3, &H80, &H8D, &H9A, &H97)
  102.  
  103.     g14 = Array( _
  104.         &H0, &HE, &H1C, &H12, &H38, &H36, &H24, &H2A, &H70, &H7E, &H6C, &H62, &H48, &H46, &H54, &H5A, _
  105.         &HE0, &HEE, &HFC, &HF2, &HD8, &HD6, &HC4, &HCA, &H90, &H9E, &H8C, &H82, &HA8, &HA6, &HB4, &HBA, _
  106.         &HDB, &HD5, &HC7, &HC9, &HE3, &HED, &HFF, &HF1, &HAB, &HA5, &HB7, &HB9, &H93, &H9D, &H8F, &H81, _
  107.         &H3B, &H35, &H27, &H29, &H3, &HD, &H1F, &H11, &H4B, &H45, &H57, &H59, &H73, &H7D, &H6F, &H61, _
  108.         &HAD, &HA3, &HB1, &HBF, &H95, &H9B, &H89, &H87, &HDD, &HD3, &HC1, &HCF, &HE5, &HEB, &HF9, &HF7, _
  109.         &H4D, &H43, &H51, &H5F, &H75, &H7B, &H69, &H67, &H3D, &H33, &H21, &H2F, &H5, &HB, &H19, &H17, _
  110.         &H76, &H78, &H6A, &H64, &H4E, &H40, &H52, &H5C, &H6, &H8, &H1A, &H14, &H3E, &H30, &H22, &H2C, _
  111.         &H96, &H98, &H8A, &H84, &HAE, &HA0, &HB2, &HBC, &HE6, &HE8, &HFA, &HF4, &HDE, &HD0, &HC2, &HCC, _
  112.         &H41, &H4F, &H5D, &H53, &H79, &H77, &H65, &H6B, &H31, &H3F, &H2D, &H23, &H9, &H7, &H15, &H1B, _
  113.         &HA1, &HAF, &HBD, &HB3, &H99, &H97, &H85, &H8B, &HD1, &HDF, &HCD, &HC3, &HE9, &HE7, &HF5, &HFB, _
  114.         &H9A, &H94, &H86, &H88, &HA2, &HAC, &HBE, &HB0, &HEA, &HE4, &HF6, &HF8, &HD2, &HDC, &HCE, &HC0, _
  115.         &H7A, &H74, &H66, &H68, &H42, &H4C, &H5E, &H50, &HA, &H4, &H16, &H18, &H32, &H3C, &H2E, &H20, _
  116.         &HEC, &HE2, &HF0, &HFE, &HD4, &HDA, &HC8, &HC6, &H9C, &H92, &H80, &H8E, &HA4, &HAA, &HB8, &HB6, _
  117.         &HC, &H2, &H10, &H1E, &H34, &H3A, &H28, &H26, &H7C, &H72, &H60, &H6E, &H44, &H4A, &H58, &H56, _
  118.         &H37, &H39, &H2B, &H25, &HF, &H1, &H13, &H1D, &H47, &H49, &H5B, &H55, &H7F, &H71, &H63, &H6D, _
  119.         &HD7, &HD9, &HCB, &HC5, &HEF, &HE1, &HF3, &HFD, &HA7, &HA9, &HBB, &HB5, &H9F, &H91, &H83, &H8D)
  120.  
  121.     sbox = Array( _
  122.         &H63, &H7C, &H77, &H7B, &HF2, &H6B, &H6F, &HC5, &H30, &H1, &H67, &H2B, &HFE, &HD7, &HAB, &H76, _
  123.         &HCA, &H82, &HC9, &H7D, &HFA, &H59, &H47, &HF0, &HAD, &HD4, &HA2, &HAF, &H9C, &HA4, &H72, &HC0, _
  124.         &HB7, &HFD, &H93, &H26, &H36, &H3F, &HF7, &HCC, &H34, &HA5, &HE5, &HF1, &H71, &HD8, &H31, &H15, _
  125.         &H4, &HC7, &H23, &HC3, &H18, &H96, &H5, &H9A, &H7, &H12, &H80, &HE2, &HEB, &H27, &HB2, &H75, _
  126.         &H9, &H83, &H2C, &H1A, &H1B, &H6E, &H5A, &HA0, &H52, &H3B, &HD6, &HB3, &H29, &HE3, &H2F, &H84, _
  127.         &H53, &HD1, &H0, &HED, &H20, &HFC, &HB1, &H5B, &H6A, &HCB, &HBE, &H39, &H4A, &H4C, &H58, &HCF, _
  128.         &HD0, &HEF, &HAA, &HFB, &H43, &H4D, &H33, &H85, &H45, &HF9, &H2, &H7F, &H50, &H3C, &H9F, &HA8, _
  129.         &H51, &HA3, &H40, &H8F, &H92, &H9D, &H38, &HF5, &HBC, &HB6, &HDA, &H21, &H10, &HFF, &HF3, &HD2, _
  130.         &HCD, &HC, &H13, &HEC, &H5F, &H97, &H44, &H17, &HC4, &HA7, &H7E, &H3D, &H64, &H5D, &H19, &H73, _
  131.         &H60, &H81, &H4F, &HDC, &H22, &H2A, &H90, &H88, &H46, &HEE, &HB8, &H14, &HDE, &H5E, &HB, &HDB, _
  132.         &HE0, &H32, &H3A, &HA, &H49, &H6, &H24, &H5C, &HC2, &HD3, &HAC, &H62, &H91, &H95, &HE4, &H79, _
  133.         &HE7, &HC8, &H37, &H6D, &H8D, &HD5, &H4E, &HA9, &H6C, &H56, &HF4, &HEA, &H65, &H7A, &HAE, &H8, _
  134.         &HBA, &H78, &H25, &H2E, &H1C, &HA6, &HB4, &HC6, &HE8, &HDD, &H74, &H1F, &H4B, &HBD, &H8B, &H8A, _
  135.         &H70, &H3E, &HB5, &H66, &H48, &H3, &HF6, &HE, &H61, &H35, &H57, &HB9, &H86, &HC1, &H1D, &H9E, _
  136.         &HE1, &HF8, &H98, &H11, &H69, &HD9, &H8E, &H94, &H9B, &H1E, &H87, &HE9, &HCE, &H55, &H28, &HDF, _
  137.         &H8C, &HA1, &H89, &HD, &HBF, &HE6, &H42, &H68, &H41, &H99, &H2D, &HF, &HB0, &H54, &HBB, &H16)
  138.  
  139.     sboxinv = Array( _
  140.         &H52, &H9, &H6A, &HD5, &H30, &H36, &HA5, &H38, &HBF, &H40, &HA3, &H9E, &H81, &HF3, &HD7, &HFB, _
  141.         &H7C, &HE3, &H39, &H82, &H9B, &H2F, &HFF, &H87, &H34, &H8E, &H43, &H44, &HC4, &HDE, &HE9, &HCB, _
  142.         &H54, &H7B, &H94, &H32, &HA6, &HC2, &H23, &H3D, &HEE, &H4C, &H95, &HB, &H42, &HFA, &HC3, &H4E, _
  143.         &H8, &H2E, &HA1, &H66, &H28, &HD9, &H24, &HB2, &H76, &H5B, &HA2, &H49, &H6D, &H8B, &HD1, &H25, _
  144.         &H72, &HF8, &HF6, &H64, &H86, &H68, &H98, &H16, &HD4, &HA4, &H5C, &HCC, &H5D, &H65, &HB6, &H92, _
  145.         &H6C, &H70, &H48, &H50, &HFD, &HED, &HB9, &HDA, &H5E, &H15, &H46, &H57, &HA7, &H8D, &H9D, &H84, _
  146.         &H90, &HD8, &HAB, &H0, &H8C, &HBC, &HD3, &HA, &HF7, &HE4, &H58, &H5, &HB8, &HB3, &H45, &H6, _
  147.         &HD0, &H2C, &H1E, &H8F, &HCA, &H3F, &HF, &H2, &HC1, &HAF, &HBD, &H3, &H1, &H13, &H8A, &H6B, _
  148.         &H3A, &H91, &H11, &H41, &H4F, &H67, &HDC, &HEA, &H97, &HF2, &HCF, &HCE, &HF0, &HB4, &HE6, &H73, _
  149.         &H96, &HAC, &H74, &H22, &HE7, &HAD, &H35, &H85, &HE2, &HF9, &H37, &HE8, &H1C, &H75, &HDF, &H6E, _
  150.         &H47, &HF1, &H1A, &H71, &H1D, &H29, &HC5, &H89, &H6F, &HB7, &H62, &HE, &HAA, &H18, &HBE, &H1B, _
  151.         &HFC, &H56, &H3E, &H4B, &HC6, &HD2, &H79, &H20, &H9A, &HDB, &HC0, &HFE, &H78, &HCD, &H5A, &HF4, _
  152.         &H1F, &HDD, &HA8, &H33, &H88, &H7, &HC7, &H31, &HB1, &H12, &H10, &H59, &H27, &H80, &HEC, &H5F, _
  153.         &H60, &H51, &H7F, &HA9, &H19, &HB5, &H4A, &HD, &H2D, &HE5, &H7A, &H9F, &H93, &HC9, &H9C, &HEF, _
  154.         &HA0, &HE0, &H3B, &H4D, &HAE, &H2A, &HF5, &HB0, &HC8, &HEB, &HBB, &H3C, &H83, &H53, &H99, &H61, _
  155.         &H17, &H2B, &H4, &H7E, &HBA, &H77, &HD6, &H26, &HE1, &H69, &H14, &H63, &H55, &H21, &HC, &H7D)
  156.  
  157.     rcon = Array( _
  158.         &H8D, &H1, &H2, &H4, &H8, &H10, &H20, &H40, &H80, &H1B, &H36, &H6C, &HD8, &HAB, &H4D, &H9A, _
  159.         &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, &HC5, &H91, &H39, _
  160.         &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, &H25, &H4A, &H94, &H33, &H66, &HCC, &H83, &H1D, &H3A, _
  161.         &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, &H8, &H10, &H20, &H40, &H80, &H1B, &H36, &H6C, &HD8, _
  162.         &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, _
  163.         &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, &H25, &H4A, &H94, &H33, &H66, &HCC, _
  164.         &H83, &H1D, &H3A, &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, &H8, &H10, &H20, &H40, &H80, &H1B, _
  165.         &H36, &H6C, &HD8, &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, &H6A, &HD4, &HB3, _
  166.         &H7D, &HFA, &HEF, &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, &H25, &H4A, &H94, _
  167.         &H33, &H66, &HCC, &H83, &H1D, &H3A, &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, &H8, &H10, &H20, _
  168.         &H40, &H80, &H1B, &H36, &H6C, &HD8, &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, _
  169.         &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, _
  170.         &H25, &H4A, &H94, &H33, &H66, &HCC, &H83, &H1D, &H3A, &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, _
  171.         &H8, &H10, &H20, &H40, &H80, &H1B, &H36, &H6C, &HD8, &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, _
  172.         &HC6, &H97, &H35, &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, _
  173.         &H61, &HC2, &H9F, &H25, &H4A, &H94, &H33, &H66, &HCC, &H83, &H1D, &H3A, &H74, &HE8, &HCB)
  174.  
  175.   Dim expandedKey, block(16), aesKey(32), i, isDone, j
  176.   Dim sCipher, sTemp, nonce(16), priorCipher(16)
  177.   Dim x, r, temp(4), intTemp
  178.  
  179.   For i = 0 To (Len(sKey) - 1)
  180.     aesKey(i) = Asc(Mid(sKey, i + 1, 1))
  181.   Next
  182.  
  183.   For i = Len(sKey) To 31
  184.     aesKey(i) = 0
  185.   Next
  186.  
  187.   expandedKey = expandKey(aesKey, sbox, rcon)
  188.  
  189.   sCipher = ""
  190.   j = 0
  191.   isDone = False
  192.  
  193.   Do Until isDone
  194.     sTemp = Mid(sText, j * 16 + 1, 16)
  195.  
  196.     If Len(sTemp) < 16 Then
  197.       For i = Len(sTemp) To 15
  198.          sTemp = sTemp & Chr(0)
  199.       Next
  200.     End If
  201.  
  202.     For i = 0 To 15
  203.        block(i) = Asc(Mid(sTemp, (i Mod 4) * 4 + (i \ 4) + 1, 1))
  204.     Next
  205.  
  206.     If (j + 1) * 16 >= Len(sText) Then
  207.       isDone = True
  208.     End If
  209.  
  210.     j = j + 1
  211.  
  212.     If bMode = 0 Then '' decrypt
  213.  
  214.     r = 0
  215.     For i = 0 To 15
  216.         block(i) = block(i) Xor nonce(i) Xor expandedKey((i Mod 4) * 4 + (i \ 4))
  217.     Next
  218.  
  219.     For x = 1 To 13
  220.        block(0) = sbox(block(0))
  221.        block(1) = sbox(block(1))
  222.        block(2) = sbox(block(2))
  223.        block(3) = sbox(block(3))
  224.  
  225.        intTemp = sbox(block(4))
  226.        block(4) = sbox(block(5))
  227.        block(5) = sbox(block(6))
  228.        block(6) = sbox(block(7))
  229.        block(7) = intTemp
  230.  
  231.        intTemp = sbox(block(8))
  232.        block(8) = sbox(block(10))
  233.        block(10) = intTemp
  234.        intTemp = sbox(block(9))
  235.        block(9) = sbox(block(11))
  236.        block(11) = intTemp
  237.  
  238.        intTemp = sbox(block(12))
  239.        block(12) = sbox(block(15))
  240.        block(15) = sbox(block(14))
  241.        block(14) = sbox(block(13))
  242.        block(13) = intTemp
  243.  
  244.        r = x * 16
  245.        For i = 0 To 3
  246.           temp(0) = block(i)
  247.           temp(1) = block(i + 4)
  248.           temp(2) = block(i + 8)
  249.           temp(3) = block(i + 12)
  250.  
  251.           block(i) = g2(temp(0)) Xor temp(3) Xor temp(2) Xor g3(temp(1)) Xor expandedKey(r + i * 4)
  252.           block(i + 4) = g2(temp(1)) Xor temp(0) Xor temp(3) Xor g3(temp(2)) Xor expandedKey(r + i * 4 + 1)
  253.           block(i + 8) = g2(temp(2)) Xor temp(1) Xor temp(0) Xor g3(temp(3)) Xor expandedKey(r + i * 4 + 2)
  254.           block(i + 12) = g2(temp(3)) Xor temp(2) Xor temp(1) Xor g3(temp(0)) Xor expandedKey(r + i * 4 + 3)
  255.        Next
  256.     Next
  257.  
  258.     block(0) = sbox(block(0)) Xor expandedKey(224)
  259.     block(1) = sbox(block(1)) Xor expandedKey(228)
  260.     block(2) = sbox(block(2)) Xor expandedKey(232)
  261.     block(3) = sbox(block(3)) Xor expandedKey(236)
  262.  
  263.     intTemp = sbox(block(4)) Xor expandedKey(237)
  264.     block(4) = sbox(block(5)) Xor expandedKey(225)
  265.     block(5) = sbox(block(6)) Xor expandedKey(229)
  266.     block(6) = sbox(block(7)) Xor expandedKey(233)
  267.     block(7) = intTemp
  268.  
  269.     intTemp = sbox(block(8)) Xor expandedKey(234)
  270.     block(8) = sbox(block(10)) Xor expandedKey(226)
  271.     block(10) = intTemp
  272.     intTemp = sbox(block(9)) Xor expandedKey(238)
  273.     block(9) = sbox(block(11)) Xor expandedKey(230)
  274.     block(11) = intTemp
  275.  
  276.     intTemp = sbox(block(12)) Xor expandedKey(231)
  277.     block(12) = sbox(block(15)) Xor expandedKey(227)
  278.     block(15) = sbox(block(14)) Xor expandedKey(239)
  279.     block(14) = sbox(block(13)) Xor expandedKey(235)
  280.     block(13) = intTemp
  281.  
  282.     For i = 0 To 15
  283.        nonce(i) = block(i)
  284.     Next
  285.  
  286.     ElseIf bMode = 1 Then '' encrypt
  287.  
  288.     block(0) = sboxinv(block(0) Xor expandedKey(224))
  289.     block(1) = sboxinv(block(1) Xor expandedKey(228))
  290.     block(2) = sboxinv(block(2) Xor expandedKey(232))
  291.     block(3) = sboxinv(block(3) Xor expandedKey(236))
  292.  
  293.     intTemp = sboxinv(block(4) Xor expandedKey(225))
  294.     block(4) = sboxinv(block(7) Xor expandedKey(237))
  295.     block(7) = sboxinv(block(6) Xor expandedKey(233))
  296.     block(6) = sboxinv(block(5) Xor expandedKey(229))
  297.     block(5) = intTemp
  298.  
  299.     intTemp = sboxinv(block(8) Xor expandedKey(226))
  300.     block(8) = sboxinv(block(10) Xor expandedKey(234))
  301.     block(10) = intTemp
  302.     intTemp = sboxinv(block(9) Xor expandedKey(230))
  303.     block(9) = sboxinv(block(11) Xor expandedKey(238))
  304.     block(11) = intTemp
  305.  
  306.     intTemp = sboxinv(block(12) Xor expandedKey(227))
  307.     block(12) = sboxinv(block(13) Xor expandedKey(231))
  308.     block(13) = sboxinv(block(14) Xor expandedKey(235))
  309.     block(14) = sboxinv(block(15) Xor expandedKey(239))
  310.     block(15) = intTemp
  311.  
  312.     For x = 13 To 1 Step -1
  313.        r = x * 16
  314.        For i = 0 To 3
  315.           temp(0) = block(i) Xor expandedKey(r + i * 4)
  316.           temp(1) = block(i + 4) Xor expandedKey(r + i * 4 + 1)
  317.           temp(2) = block(i + 8) Xor expandedKey(r + i * 4 + 2)
  318.           temp(3) = block(i + 12) Xor expandedKey(r + i * 4 + 3)
  319.  
  320.           block(i) = g14(temp(0)) Xor g9(temp(3)) Xor g13(temp(2)) Xor g11(temp(1))
  321.           block(i + 4) = g14(temp(1)) Xor g9(temp(0)) Xor g13(temp(3)) Xor g11(temp(2))
  322.           block(i + 8) = g14(temp(2)) Xor g9(temp(1)) Xor g13(temp(0)) Xor g11(temp(3))
  323.           block(i + 12) = g14(temp(3)) Xor g9(temp(2)) Xor g13(temp(1)) Xor g11(temp(0))
  324.        Next
  325.  
  326.        block(0) = sboxinv(block(0))
  327.        block(1) = sboxinv(block(1))
  328.        block(2) = sboxinv(block(2))
  329.        block(3) = sboxinv(block(3))
  330.  
  331.        intTemp = sboxinv(block(4))
  332.        block(4) = sboxinv(block(7))
  333.        block(7) = sboxinv(block(6))
  334.        block(6) = sboxinv(block(5))
  335.        block(5) = intTemp
  336.  
  337.        intTemp = sboxinv(block(8))
  338.        block(8) = sboxinv(block(10))
  339.        block(10) = intTemp
  340.        intTemp = sboxinv(block(9))
  341.        block(9) = sboxinv(block(11))
  342.        block(11) = intTemp
  343.  
  344.        intTemp = sboxinv(block(12))
  345.        block(12) = sboxinv(block(13))
  346.        block(13) = sboxinv(block(14))
  347.        block(14) = sboxinv(block(15))
  348.        block(15) = intTemp
  349.     Next
  350.  
  351.     r = 0
  352.     For i = 0 To 15
  353.        block(i) = block(i) Xor expandedKey((i Mod 4) * 4 + (i \ 4)) Xor nonce(i)
  354.        nonce(i) = priorCipher(i)
  355.     Next
  356.  
  357.     End If
  358.  
  359.     For i = 0 To 15
  360.        sCipher = sCipher & Chr(block((i Mod 4) * 4 + (i \ 4)))
  361.     Next
  362.  
  363.  Loop
  364.  
  365.  EnDeCryptAES = sCipher
  366.  
  367. End Function
  368.  
  369. Private Function expandKey(ByRef key(), ByRef Box(), ByRef rcon())
  370.   '' MOD added () to array variables
  371.   Dim rConIter, temp(), i, result(240)
  372.  
  373.   ReDim temp(4)
  374.   rConIter = 1
  375.  
  376.   For i = 0 To 31
  377.      result(i) = key(i)
  378.   Next
  379.  
  380.   For i = 32 To 239 Step 4
  381.      temp(0) = result(i - 4)
  382.      temp(1) = result(i - 3)
  383.      temp(2) = result(i - 2)
  384.      temp(3) = result(i - 1)
  385.  
  386.      If i Mod 32 = 0 Then
  387.        temp = keyScheduleCore(temp, rConIter, Box, rcon)
  388.        rConIter = rConIter + 1
  389.      End If
  390.  
  391.      If i Mod 32 = 16 Then
  392.        temp(0) = Box(temp(0))
  393.        temp(1) = Box(temp(1))
  394.        temp(2) = Box(temp(2))
  395.        temp(3) = Box(temp(3))
  396.      End If
  397.  
  398.      result(i) = result(i - 32) Xor temp(0)
  399.      result(i + 1) = result(i - 31) Xor temp(1)
  400.      result(i + 2) = result(i - 30) Xor temp(2)
  401.      result(i + 3) = result(i - 29) Xor temp(3)
  402.   Next
  403.  
  404.   expandKey = result
  405.  
  406. End Function
  407.  
  408. Private Function keyScheduleCore(ByRef row(), ByVal a, ByRef Box(), ByRef rcon())
  409.   Dim result(4), i
  410.   Const strThisProc As String = "keyScheduleCore"
  411.  
  412.     For i = 0 To 3
  413.         result(i) = Box(row((i + 5) Mod 4))
  414.     Next
  415.   result(0) = result(0) Xor rcon(a)
  416.   keyScheduleCore = result
  417.  
  418. End Function
Jun 24 '17 #1
4 1402
zmbd
5,501 Expert Mod 4TB
lumo
It's not the original code posted by Rabbit,
That's a lot of code to wade through, perhaps you could tell us what modifications you have made to the code and that would give us a starting point.

-Z
Jun 24 '17 #2
lumo
3
Hi Z. Thank you for writing. Actually my code was based on your comment and code (the CBC version)! I didn't remember that since I did this over a year ago and never touched the code again. So what I did now was to compare your code and my code and I found a few lines missing after line 286:

Expand|Select|Wrap|Line Numbers
  1. For i = 0 To 15
  2.    priorCipher(i) = block(i)
  3. Next
Maybe I "lost" that 3 lines during my edit, no idea. But now everything is working as it should.

-Luca
Jun 25 '17 #3
zmbd
5,501 Expert Mod 4TB
I am glad you found that, I was just about to start comparing your code to one I have that I know works.
Jun 25 '17 #4
lumo
3
Thanks! I'm so happy it's working now!
Jun 25 '17 #5

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

Similar topics

13
by: usgog | last post by:
I need to implement a function to return True/false whether String A contains String B. For example, String A = "This is a test"; String B = "is is". So it will return TRUE if String A includes two...
20
by: Drebin | last post by:
It's a long story really, but the bottom line is we need to encrypt or obfuscate a clear-text 9-digit SSN/taxpayer ID into something less than 21 characters. It doesn't need to be super-secure,...
113
by: Bonj | last post by:
I was in need of an encryption algorithm to the following requirements: 1) Must be capable of encrypting strings to a byte array, and decyrpting back again to the same string 2) Must have the same...
5
by: Nadav Popplewell | last post by:
Hi everybody, I've got a web application where I need to join several strings, some of which are read from a dbase and display then IN the order they are joined. I.E. I want to display "Hello...
6
by: Gary | last post by:
I'm confused about the two ways of string copy below. The first one (two functions) works; the second doesn't. Can anybody explain the reason to me? Thanks a lot. #include <stdio.h> /*this one...
0
by: nicromonicon | last post by:
hey guys,im doing Kruskal algorithm in C#..works fine...but it takes so long on large input? i tried using textreader instead of streamreader..still nothin any way to make it faster? ...
2
by: sankar2011 | last post by:
Please see the attachment also! Assumptions: 1>n nodes and m edges are there in the Graph V. V may directed or undirected both. 2>Weights of all the edges are non-negative finite numbers. ...
10
Rabbit
by: Rabbit | last post by:
Introduction One of the big issues with name matching is how prone it is to error. There are many different ways people spell the same name, typos, mishearing what the other person said. There are a...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
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...
0
Oralloy
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,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
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...
0
isladogs
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...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.