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()); }