MacBook-Pro-de-Etienne:DES etienne$ python DES.py Algorithme du DES Usage: python DES.py <-c ou -d> [-v] -c = crypter, -d = decrypter -v = verbose (optionnel) cle et message = deux nombres hexadecimaux de longueur 16 MacBook-Pro-de-Etienne:DES etienne$ python DES.py -c -v 0123456789ABCDEF 23456789ABCDEF01 L0 = 0110 0110 0000 0000 0110 0110 1111 1111 = 0x660066ff R0 = 0111 1000 0101 0101 0111 1000 0101 0101 = 0x78557855 -------------------------------- iteration 1 K = 0000 1011 0000 0010 0110 0111 1001 1011 0100 1001 1010 0101 E(R) = 1011 1111 0000 0010 1010 1010 1011 1111 0000 0010 1010 1010 A = E(R) + K = 1011 0100 0000 0000 1100 1101 0010 0100 0100 1011 0000 1111 S1 = 0001 S2 = 1111 S3 = 0111 S4 = 0000 S5 = 0100 S6 = 1010 S7 = 0111 S8 = 0100 B = 0001 1111 0111 0000 0100 1010 0111 0100 P(B) = 0101 0110 0011 1101 0100 0100 0011 0110 L1 = 0111 1000 0101 0101 0111 1000 0101 0101 = 0x78557855 R1 = 0011 0000 0011 1101 0010 0010 1100 1001 = 0x303d22c9 -------------------------------- iteration 2 K = 0110 1001 1010 0110 0101 1001 0010 0101 0110 1010 0010 0110 E(R) = 1001 1010 0000 0001 1111 1010 1001 0000 0101 0110 0101 0010 A = E(R) + K = 1111 0011 1010 0111 1010 0011 1011 0101 0011 1100 0111 0100 S1 = 0101 S2 = 0011 S3 = 1000 S4 = 1111 S5 = 0010 S6 = 0001 S7 = 1001 S8 = 1010 B = 0101 0011 1000 1111 0010 0001 1001 1010 P(B) = 1100 1010 0100 0010 1111 0001 1100 0011 L2 = 0011 0000 0011 1101 0010 0010 1100 1001 = 0x303d22c9 R2 = 1011 0010 0001 0111 1000 1001 1001 0110 = 0xb2178996 -------------------------------- iteration 3 K = 0100 0101 1101 0100 1000 1010 1011 0100 0010 1000 1101 0010 E(R) = 0101 1010 0100 0000 1010 1111 1100 0101 0011 1100 1010 1101 A = E(R) + K = 0001 1111 1001 0100 0010 0101 0111 0001 0001 0100 0111 1111 S1 = 0100 S2 = 0000 S3 = 0001 S4 = 0000 S5 = 1110 S6 = 0110 S7 = 1110 S8 = 1011 B = 0100 0000 0001 0000 1110 0110 1110 1011 P(B) = 0000 1101 0011 0110 1000 1100 1000 1001 L3 = 1011 0010 0001 0111 1000 1001 1001 0110 = 0xb2178996 R3 = 0011 1101 0000 1011 1010 1110 0100 0000 = 0x3d0bae40 -------------------------------- iteration 4 K = 0111 0010 1000 1001 1101 0010 1010 0101 1000 0010 0101 0111 E(R) = 0001 1111 1010 1000 0101 0111 1101 0101 1100 0010 0000 0000 A = E(R) + K = 0110 1101 0010 0001 1000 0101 0111 0000 0100 0000 0101 0111 S1 = 0101 S2 = 0111 S3 = 1110 S4 = 1011 S5 = 1110 S6 = 1010 S7 = 1101 S8 = 1011 B = 0101 0111 1110 1011 1110 1010 1101 1011 P(B) = 1101 1011 0111 0111 1100 1001 1101 0111 L4 = 0011 1101 0000 1011 1010 1110 0100 0000 = 0x3d0bae40 R4 = 0110 1001 0110 0000 0100 0000 0100 0001 = 0x69604041 -------------------------------- iteration 5 K = 0011 1100 1110 1000 0000 0011 0001 0111 1010 0110 1100 0010 E(R) = 1011 0101 0010 1011 0000 0000 0010 0000 0000 0010 0000 0010 A = E(R) + K = 1000 1001 1100 0011 0000 0011 0011 0111 1010 0100 1100 0000 S1 = 0001 S2 = 0101 S3 = 1111 S4 = 1000 S5 = 1101 S6 = 1101 S7 = 0011 S8 = 1101 B = 0001 0101 1111 1000 1101 1101 0011 1101 P(B) = 0011 1111 0000 0101 0110 1101 0111 1110 L5 = 0110 1001 0110 0000 0100 0000 0100 0001 = 0x69604041 R5 = 0000 0010 0000 1110 1100 0011 0011 1110 = 0x020ec33e -------------------------------- iteration 6 K = 0010 0011 0010 0101 0001 1110 0011 1100 1000 0101 0100 0101 E(R) = 0000 0000 0100 0000 0101 1101 0110 0000 0110 1001 1111 1100 A = E(R) + K = 0010 0011 0110 0101 0100 0011 0101 1100 1110 1100 1011 1001 S1 = 0010 S2 = 0110 S3 = 0101 S4 = 1000 S5 = 1010 S6 = 1000 S7 = 1111 S8 = 0011 B = 0010 0110 0101 1000 1010 1000 1111 0011 P(B) = 0101 0111 0001 0011 0000 1110 1101 0001 L6 = 0000 0010 0000 1110 1100 0011 0011 1110 = 0x020ec33e R6 = 0011 1110 0111 0011 0100 1110 1001 0000 = 0x3e734e90 -------------------------------- iteration 7 K = 0110 1100 0000 0100 1001 0101 0000 1010 1110 0100 1100 0110 E(R) = 0001 1111 1100 0011 1010 0110 1010 0101 1101 0100 1010 0000 A = E(R) + K = 0111 0011 1100 0111 0011 0011 1010 1111 0011 0000 0110 0110 S1 = 0000 S2 = 0010 S3 = 0010 S4 = 0100 S5 = 1110 S6 = 1110 S7 = 1101 S8 = 0001 B = 0000 0010 0010 0100 1110 1110 1101 0001 P(B) = 0101 0011 0011 0100 0001 1000 1000 1101 L7 = 0011 1110 0111 0011 0100 1110 1001 0000 = 0x3e734e90 R7 = 0101 0001 0011 1010 1101 1011 1011 0011 = 0x513adbb3 -------------------------------- iteration 8 K = 0101 0111 1000 1000 0011 1000 0110 1100 1110 0101 1000 0001 E(R) = 1010 1010 0010 1001 1111 0101 0110 1111 0111 1101 1010 0110 A = E(R) + K = 1111 1101 1010 0001 1100 1101 0000 0011 1001 1000 0010 0111 S1 = 1101 S2 = 0000 S3 = 1001 S4 = 0000 S5 = 0010 S6 = 0110 S7 = 0001 S8 = 0111 B = 1101 0000 1001 0000 0010 0110 0001 0111 P(B) = 0000 0110 1010 0010 1000 1001 1010 1010 L8 = 0101 0001 0011 1010 1101 1011 1011 0011 = 0x513adbb3 R8 = 0011 1000 1101 0001 1100 0111 0011 1010 = 0x38d1c73a -------------------------------- iteration 9 K = 1100 0000 1100 1001 1110 1001 0010 0110 1011 1000 0011 1001 E(R) = 0001 1111 0001 0110 1010 0011 1110 0000 1110 1001 1111 0100 A = E(R) + K = 1101 1111 1101 1111 0100 1010 1100 0110 0101 0001 1100 1101 S1 = 1110 S2 = 1110 S3 = 0010 S4 = 0110 S5 = 0110 S6 = 0010 S7 = 0111 S8 = 0111 B = 1110 1110 0010 0110 0110 0010 0111 0111 P(B) = 0100 0010 1111 1110 1001 1110 1011 0100 L9 = 0011 1000 1101 0001 1100 0111 0011 1010 = 0x38d1c73a R9 = 0001 0011 1100 0100 0100 0101 0000 0111 = 0x13c44507 -------------------------------- iteration 10 K = 1001 0001 1110 0011 0000 0111 0110 0011 0001 1101 0111 0010 E(R) = 1000 1010 0111 1110 0000 1000 0010 0000 1010 1000 0000 1110 A = E(R) + K = 0001 1011 1001 1101 0000 1111 0100 0011 1011 0101 0111 1100 S1 = 0001 S2 = 0000 S3 = 0010 S4 = 0011 S5 = 1000 S6 = 0000 S7 = 0101 S8 = 0101 B = 0001 0000 0010 0011 1000 0000 0101 0101 P(B) = 1000 0011 0101 0000 0000 1000 0010 0110 L10 = 0001 0011 1100 0100 0100 0101 0000 0111 = 0x13c44507 R10 = 1011 1011 1000 0001 1100 1111 0001 1100 = 0xbb81cf1c -------------------------------- iteration 11 K = 0010 0001 0001 1111 1000 0011 0000 1101 1000 1001 0011 1010 E(R) = 0101 1111 0111 1100 0000 0011 1110 0101 1110 1000 1111 1001 A = E(R) + K = 0111 1110 0110 0011 1000 0000 1110 1000 0110 0001 1100 0011 S1 = 1000 S2 = 1011 S3 = 0101 S4 = 0111 S5 = 0011 S6 = 1111 S7 = 0111 S8 = 1111 B = 1000 1011 0101 0111 0011 1111 0111 1111 P(B) = 1111 1110 1111 1011 0111 1100 1010 1000 L11 = 1011 1011 1000 0001 1100 1111 0001 1100 = 0xbb81cf1c R11 = 1110 1101 0011 1111 0011 1001 1010 1111 = 0xed3f39af -------------------------------- iteration 12 K = 0111 0001 0011 0000 1110 0101 0100 0101 0101 1100 0101 0100 E(R) = 1111 0101 1010 1001 1111 1110 1001 1111 0011 1101 0101 1111 A = E(R) + K = 1000 0100 1001 1001 0001 1011 1101 1010 0110 0001 0000 1011 S1 = 1111 S2 = 1111 S3 = 0100 S4 = 1010 S5 = 0101 S6 = 0101 S7 = 0010 S8 = 0011 B = 1111 1111 0100 1010 0101 0101 0010 0011 P(B) = 0110 0000 1100 1111 1110 1110 0101 1010 L12 = 1110 1101 0011 1111 0011 1001 1010 1111 = 0xed3f39af R12 = 1101 1011 0100 1110 0010 0001 0100 0110 = 0xdb4e2146 -------------------------------- iteration 13 K = 1001 0001 1100 0100 1101 0000 0100 1001 1000 0000 1111 1100 E(R) = 0110 1111 0110 1010 0101 1100 0001 0000 0010 1010 0000 1101 A = E(R) + K = 1111 1110 1010 1110 1000 1100 0101 1001 1010 1010 1111 0001 S1 = 1101 S2 = 0100 S3 = 1010 S4 = 1001 S5 = 1111 S6 = 0111 S7 = 0100 S8 = 1111 B = 1101 0100 1010 1001 1111 0111 0100 1111 P(B) = 1010 1001 1011 0110 1010 1001 1111 1110 L13 = 1101 1011 0100 1110 0010 0001 0100 0110 = 0xdb4e2146 R13 = 0100 0100 1000 1001 1001 0000 0101 0001 = 0x44899051 -------------------------------- iteration 14 K = 0101 0100 0100 0011 1011 0110 1000 0001 1101 1100 1000 1101 E(R) = 1010 0000 1001 0100 0101 0011 1100 1010 0000 0010 1010 0010 A = E(R) + K = 1111 0100 1101 0111 1110 0101 0100 1011 1101 1110 0010 1111 S1 = 0110 S2 = 1000 S3 = 0001 S4 = 0000 S5 = 0101 S6 = 1000 S7 = 0000 S8 = 1101 B = 0110 1000 0001 0000 0101 1000 0000 1101 P(B) = 0011 1100 0000 1100 1000 1010 0010 0000 L14 = 0100 0100 1000 1001 1001 0000 0101 0001 = 0x44899051 R14 = 1110 0111 0100 0010 1010 1011 0110 0110 = 0xe742ab66 -------------------------------- iteration 15 K = 1011 0110 1001 0001 0000 0101 0000 1010 0001 0110 1011 0101 E(R) = 0111 0000 1110 1010 0000 0101 0101 0101 0110 1011 0000 1101 A = E(R) + K = 1100 0110 0111 1011 0000 0000 0101 1111 0111 1101 1011 1000 S1 = 0101 S2 = 0001 S3 = 0011 S4 = 0111 S5 = 1010 S6 = 0111 S7 = 1000 S8 = 1111 B = 0101 0001 0011 0111 1010 0111 1000 1111 P(B) = 1000 1101 0110 0010 1111 1000 1010 1111 L15 = 1110 0111 0100 0010 1010 1011 0110 0110 = 0xe742ab66 R15 = 1100 1001 1110 1011 0110 1000 1111 1110 = 0xc9eb68fe -------------------------------- iteration 16 K = 1100 1010 0011 1101 0000 0011 1011 1000 0111 0000 0011 0010 E(R) = 0110 0101 0011 1111 0101 0110 1011 0101 0001 0111 1111 1101 A = E(R) + K = 1010 1111 0000 0010 0101 0101 0000 1101 0110 0111 1100 1111 S1 = 1001 S2 = 0101 S3 = 0011 S4 = 0010 S5 = 1011 S6 = 0100 S7 = 0110 S8 = 0100 B = 1001 0101 0011 0010 1011 0100 0110 0100 P(B) = 0010 0101 1101 0000 0100 0100 1011 1110 L16 = 1100 1001 1110 1011 0110 1000 1111 1110 = 0xc9eb68fe R16 = 1100 0010 1001 0010 1110 1111 1101 1000 = 0xc292efd8 -------------------------------- C = 1010 0100 0111 0110 0000 0110 1010 1111 0001 0011 0010 1110 1110 1111 1111 0111 = 0xa47606af132eeff7 MacBook-Pro-de-Etienne:DES etienne$