public void FindPrefixLength() { EncryptionOracleWithRandomPrefix eo = new EncryptionOracleWithRandomPrefix(); int expected = eo.RandomPrefixLength; RandomPrefixAESCracker cracker = new RandomPrefixAESCracker(unknownString); int actual = cracker.FindRandomPrefixLength(); Assert.AreEqual(expected, actual); }
public int FindRandomPrefixLength() { int blockSize = 16; _randomPrefixLength = 1; EncryptionOracleWithRandomPrefix encryption = new EncryptionOracleWithRandomPrefix(); string[] firstBlock = new string[blockSize]; firstBlock[0] = encryption.EncryptConsistentKey("", base.unknownString).Substring(0, blockSize).ToString(); for (int i = 1; i < blockSize; i++) { firstBlock[i] = encryption.EncryptConsistentKey(new String('A', i), base.unknownString).Substring(0, blockSize).ToString(); if (firstBlock[i] == firstBlock[i - 1]) { _randomPrefixLength = 17 - i; break; } } return(_randomPrefixLength.Value); }