public void TestAesEncrypt() { uint[] key = new uint[] { 1, 2, 3, 4 }; uint[] data = new uint[] { 5, 6, 7, 8 }; uint[] expected = new uint[] { 0x6A8FC678, 0xF71305CA, 0xACC4BE7, 0x58158314 }; var aes = new Sjcl.Cipher.Aes(key); uint[] actual = aes.Encrypt(data); Assert.IsTrue(Utils.CompareTables(expected, actual)); }
// convert user-supplied password array public static uint[] prepare_key(uint[] a) { int i, j, r; var pkey = new uint[] { 0x93C467E3, 0x7DB0C7A4, 0xD1BE3F81, 0x0152CB56 }; for (r = 65536; r-- > 0; ) { for (j = 0; j < a.Length; j += 4) { var key = new uint[] { 0, 0, 0, 0 }; for (i = 0; i < 4; i++) { if (i + j < a.Length) { key[i] = a[i + j]; } } var aes = new Sjcl.Cipher.Aes(key); pkey = aes.Encrypt(pkey); } } return pkey; }