Beispiel #1
0
        public static int FilterFunctionTest()
        {
            var s = new byte[]
            {
                0x00,
                0x80,
                0x20,
                0xA0,
                0x08,
                0x88,
                0x28,
                0xA8,
                0x02,
                0x82,
                0x22,
                0xA2,
                0x0A,
                0x8A,
                0x2A,
                0xAA
            };
            ulong key = 0;

            for (int i = 0; i < 5; i++)
            {
                key = key << 8 | (byte)rnd.Next(0xFF);
            }
            key <<= 8;
            Console.WriteLine("0x{0:x10}", key);
            for (int i = s.Length - 1; i >= 0; i--)
            {
                Console.Write("{0:x2} ", s[i]);
            }
            Console.WriteLine();
            int fb = 0;

            for (int i = s.Length - 1; i >= 0; i--)
            {
                var c  = new Crypto1(key | (ulong)s[i]);
                var ks = c.PeekCrypto1Bit();
                fb = fb << 1 | ks;
                Console.Write(" {0} ", ks);
            }
            Console.WriteLine();
            Console.WriteLine("0x{0:x4}", fb);
            return(fb);
        }
        public void PeekCrypto1Bit(ulong key)
        {
            var crypto1 = new Crypto1(key);

            Assert.AreEqual(Crypto1.Filter(crypto1.State.Odd), crypto1.PeekCrypto1Bit());
        }