コード例 #1
0
        public void FindPrefixLength()
        {
            EncryptionOracleWithRandomPrefix eo = new EncryptionOracleWithRandomPrefix();
            int expected = eo.RandomPrefixLength;
            RandomPrefixAESCracker cracker = new RandomPrefixAESCracker(unknownString);
            int actual = cracker.FindRandomPrefixLength();

            Assert.AreEqual(expected, actual);
        }
コード例 #2
0
        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);
        }