DIM clefC(1 TO 14) AS INTEGER DIM clefD(1 TO 14) AS INTEGER DIM fun1(1 TO 21) DIM fun3(1 TO 14) DIM c(1 TO 9) DIM k(1 TO 9) DIM octet AS STRING * 1 DIM octet11 AS STRING * 1 DIM octet12(1 TO 2) AS STRING * 1 DIM octet13(1 TO 3) AS STRING * 1 DIM code(1 TO 14) DIM clef AS STRING DIM i AS INTEGER DIM archive AS STRING DIM longclef AS STRING * 1 PRINT "Entrez le nom du fichier a traiter :" INPUT archive$ fun1(1) = 20 fun1(2) = 67 fun1(3) = 82 fun1(4) = 89 fun1(5) = 80 fun1(6) = 84 fun1(7) = 40 fun1(8) = 67 fun1(9) = 41 fun1(10) = 67 fun1(11) = 79 fun1(12) = 84 fun1(13) = 69 fun1(14) = 76 fun1(15) = 69 fun1(16) = 77 fun1(17) = 32 fun1(18) = 49 fun1(19) = 57 fun1(20) = 57 fun1(21) = 55 c(1) = 161 c(2) = 47 c(3) = 7 c(4) = 157 c(5) = 21 c(6) = 196 c(7) = 55 c(8) = 10 c(9) = 32 k(1) = 73 k(2) = 77 k(3) = 65 k(4) = 71 k(5) = 69 k(6) = 83 k(7) = 0 k(8) = 0 k(9) = 0 OPEN archive$ FOR RANDOM AS #1 LEN = 1 FOR i = 1 TO 21 PRINT i GET #1, i, octet IF ASC(octet) <> fun1(i) THEN GOTO Erreur NEXT i GOTO suite Erreur: PRINT "Fichier non COTELEM" CLOSE #1 GOTO fin suite: GET #1, 188, longclef FOR i = 1 TO 9 i = i + 380 GET #1, i, octet i = i - 380 fun3(i) = 255 XOR ASC(octet) fun3(i) = 2 * fun3(i) IF fun3(i) > 255 THEN fun3(i) = fun3(i) - 255 fun3(i) = NOT (fun3(i)) IF fun3(i) < 0 THEN fun3(i) = fun3(i) + 256 NEXT i GET #1, 402, octet12(1) GET #1, 403, octet12(2) GET #1, 403, octet13(1) GET #1, 404, octet13(2) GET #1, 405, octet13(3) GET #1, 423, octet11 CLOSE #1 FOR i = 1 TO 9 code(i) = c(i) XOR k(i) code(i) = fun3(i) XOR code(i) clefC(i) = code(i) NEXT i IF ASC(longclef) = 11 THEN fun3(10) = 255 XOR ASC(octet11) fun3(10) = 2 * fun3(10) IF fun3(10) > 255 THEN fun3(10) = fun3(10) - 255 fun3(10) = NOT (fun3(10)) IF fun3(10) < 0 THEN fun3(10) = fun3(10) + 256 code(10) = fun3(10) XOR 84 clefC(10) = code(10) - 3 END IF IF ASC(longclef) = 12 THEN FOR i = 10 TO 11 fun3(i) = 255 XOR ASC(octet12(i - 9)) fun3(i) = 2 * fun3(i) IF fun3(i) > 255 THEN fun3(i) = fun3(i) - 255 fun3(i) = NOT (fun3(i)) IF fun3(i) < 0 THEN fun3(i) = fun3(i) + 256 NEXT i code(10) = fun3(10) XOR 49 clefC(10) = code(10) - 1 code(11) = fun3(11) XOR 55 clefC(11) = code(11) - 1 END IF IF ASC(longclef) = 13 THEN FOR i = 10 TO 12 fun3(i) = 255 XOR ASC(octet13(i - 9)) fun3(i) = 2 * fun3(i) IF fun3(i) > 255 THEN fun3(i) = fun3(i) - 255 fun3(i) = NOT (fun3(i)) IF fun3(i) < 0 THEN fun3(i) = fun3(i) + 256 NEXT i code(10) = fun3(10) XOR 55 clefC(10) = code(10) - 1 code(11) = fun3(11) XOR 84 clefC(11) = code(11) - 1 code(12) = fun3(12) XOR 79 clefC(12) = code(12) - 1 END IF clefC(ASC(longclef)) = ASC("Q") clefD(1) = clefC(5) clefD(2) = clefC(2) clefD(3) = clefC(6) clefD(4) = clefC(10) clefD(5) = clefC(4) clefD(6) = clefC(9) clefD(7) = clefC(3) clefD(8) = clefC(8) clefD(9) = clefC(7) clefD(10) = clefC(1) clefD(11) = clefC(11) clefD(12) = clefC(12) clefD(13) = clefC(13) PRINT "Cle proposee :" FOR i = 1 TO ASC(longclef) PRINT CHR$(clefD(i)); ""; NEXT i PRINT fin: END