Example #1
0
        private string MaHoa(string p, string[] key)
        {
            /* Đầu tiên là phải hoán vị khởi tạo ngay vòng 1
             * Tách khóa K (56bit) thành 2 phần 28 bit rồi dịch vòng trái
             *
             */
            string s, xor, pbox;
            string ip = HoanViKhoiTao(p);

            string[] l = new string[17];
            l[0] = ip.Substring(0, 32);
            string r = ip.Substring(32, 32);

            for (int i = 1; i <= 16; i++)
            {
                xor  = XOR(Expand(r), key[i]);
                s    = Sboxes.S_boxes(xor);
                pbox = Pbox(s);
                l[i] = r;
                r    = XORF(pbox, l[i - 1]);
            }
            ip = r + l[16];
            ip = HoanViKetThuc(ip);
            return(ip);
        }
Example #2
0
        private string GiaiMa(string c, string[] key)
        {
            string s, xor, pbox;
            string ip = HoanViKhoiTao(c);

            string[] r = new string[17];
            string   l = ip.Substring(32, 32);

            r[16] = ip.Substring(0, 32);
            for (int i = 16; i >= 1; i--)
            {
                xor      = XOR(Expand(l), key[i]);
                s        = Sboxes.S_boxes(xor);
                pbox     = Pbox(s);
                r[i - 1] = l;
                l        = XORF(pbox, r[i]);
            }
            ip = l + r[0];
            ip = HoanViKetThuc(ip);
            return(ip);
        }