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