Esempio n. 1
0
            public void decrypt()
            {
                dec = new byt();
                byt p1, p2, p3, p4, p5;
                p1 = new byt();
                p2 = new byt();
                p3 = new byt();
                p4 = new byt();
                p5 = new byt();
                byt k1, k2, k3, k4;
                k1 = new byt();
                k2 = new byt();
                k3 = new byt();
                k4 = new byt();

                k1.PC1(key);
                p1.IP(text);
                k2.convert28(k1, 0);
                k3.convert28(k1, 1);
                p2.convert32(p1, 0);
                p3.convert32(p1, 1);

                for (int i = 0; i < 16; i++)
                {
                    k1.convert56(k2, k3);
                    k4.PC2(k1);
                    p4.E(p3);
                    p5.xor(k4, p4);
                    p4.S(p5);
                    p5.P(p4);
                    p4.xor(p5, p2);
                    p2.copy(p3);
                    p3.copy(p4);
                    k2.rightShift();
                    k3.rightShift();

                    if (i != 0 && i != 7 && i != 14 && i != 15)
                    {
                        k2.rightShift();
                        k3.rightShift();
                    }
                }

                p1.convert64(p3, p2);
                dec.IIP(p1);
            }