public void setKey(Byte a1, Byte a2, Byte a3, Byte a4, Byte a5, Byte a6, Byte a7, Byte a8) { key = new byt(); key.convert64(a1, a2, a3, a4, a5, a6, a7, a8); }
public void setText(Byte a1, Byte a2, Byte a3, Byte a4, Byte a5, Byte a6, Byte a7, Byte a8) { text = new byt(); text.convert64(a1, a2, a3, a4, a5, a6, a7, a8); }
public void encrypt() { enc = 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++) { k2.leftShift(); k3.leftShift(); if (i != 0 && i != 1 && i != 8 && i != 15) { k2.leftShift(); k3.leftShift(); } 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); } p1.convert64(p3, p2); enc.IIP(p1); }
public void returnByte(byt a) { re = new Byte[8]; for (int i = 0; i < 8; i++) { re[i] = 0; for (int j = 0; j < 8; j++) { re[i] *= 2; re[i] += (Byte)a.b[i * 8 + j]; } } }
public void S(byt a) { set(32); ftable aa; aa = new ftable(); aa.S(); for (int i = 0; i < 8; i++) { int i1 = 2 * a.b[i * 6] + a.b[i * 6 + 5], i2 = 8 * a.b[i * 6 + 1] + 4 * a.b[i * 6 + 2] + 2 * a.b[i * 6 + 3] + a.b[i * 6 + 4]; byt x; x = new byt(); x.convert4(aa.mm[i, i1, i2]); for (int j = 0; j < 4; j++) { b[i * 4 + j] = x.b[j]; } } }
public void xor(byt a, byt aa) { set(a.bb); for (int i = 0; i < bb; i++) { b[i] = a.b[i] ^ aa.b[i]; } }
public void PC1(byt a) { set(56); ftable aa; aa = new ftable(); aa.PC1(); for (int i = 0; i < 56; i++) { b[i] = a.b[aa.m[i]]; } }
public void PC2(byt a) { set(48); ftable aa; aa = new ftable(); aa.PC2(); for (int i = 0; i < 48; i++) { b[i] = a.b[aa.m[i]]; } }
public void IP(byt a) { set(64); ftable aa; aa = new ftable(); aa.IP(); for (int i = 0; i < 64; i++) { b[i] = a.b[aa.m[i]]; } }
public void P(byt a) { set(32); ftable aa; aa = new ftable(); aa.P(); for (int i = 0; i < 32; i++) { b[i] = a.b[aa.m[i]]; } }
public void copy(byt a) { bb = a.bb; set(bb); for (int i = 0; i < bb; i++) { b[i] = a.b[i]; } }
public void convert64(byt a, byt aa) { set(64); for (int i = 0; i < 32; i++) { b[i] = a.b[i]; } for (int i = 0; i < 32; i++) { b[i + 32] = aa.b[i]; } }
public void convert56(byt a, byt aa) { set(56); for (int i = 0; i < 28; i++) { b[i] = a.b[i]; } for (int i = 0; i < 28; i++) { b[i + 28] = aa.b[i]; } }
public void convert32(byt a, int lr) { set(32); int s = 0; if (lr > 0) { s = 32; } for (int i = 0; i < 32; i++) { b[i] = a.b[s]; s++; } }
public void convert28(byt a, int lr) { set(28); int s = 0; if (lr > 0) { s = 28; } for (int i = 0; i < 28; i++) { b[i] = a.b[s]; s++; } }