|
Verschlüsseln auf Teufel komm raus.Verschlüssein ist "in". Schliesslich soll und braucht nicht jeder Sysop privilegierter Benutzer Nachrichten (mit)zulesen, die nicht fuer ihn bestimmt sind. Aber wie verschlüsselt man
a) mit wenig Aufwand Diese wurden dann in Gruppen a 6 Zeichen zusammengefasst: 686583 327383 843274 653290 857732 798490 697800
Der Key zum Verschlüsseln der Nachricht, n genannt, ist in der
regel, um's schwerer zu machen, das Produkt zweier Primzahlen.
Nimmt man 98415109 (das ist eine solche Zahl) als Key, kann man
den o.a. Block zu verschlüsseln beginnen:
Wie auch Nichtmathematiker sofort erkennen, liegt der Clou der Geschichte in den beiden Zahlen n und d. Obwohl n bekannt ist, bleiben ja p und q geheim. Ist n ausreichend gross (so 200 Ziffern), ist es quasi unmöglich, p und q zu bestimmen. An einem 300 Ziffern langen n soll angeblich der NASA-Rechner 600 Jahre zu knacken haben, wollte er p und q bestimmen.
In dem Beispiel oben war p=7151 und q=13259. Diese Primzahlen
unterliegen weiteren Einschraenkungen, die man beachten muss,
damit der RSA-Unsinn Iäuft: Nun zu den Programmen:
Programm 1 Verschlüsselung von Nachrichten 20 LINE INPUT"Name der Crypto-Ausgabedatei : ";AUS§ 25 OPEN"O",l,AUS§ 30 INPUT"Public-Key des Empfaengers (Testvoreistellung bei "RETURN = 94815109"; N 40 IF N=O THEN N-94815109 60 PRINT"Nachrichtentext eingeben oder NNNN am Zeilenanfang fuer Ende" 70 W=W+1:PRINT USING "";W;:LINE INPUT".: ";M§ 71 IF LEFT§(M§,4) = "NNNN" OR LEFT§(M§,4) = "nnnn" THEN CLOSE: PRINT:PRINT"Cryptogramm unter Datei : ";AUS§;" abgespeichert.":PRINT:PRINT;END 80 M§=M§+CHR§(13):L=LEN(M§):Q=INT(L/ZEICHENPROBLOCK) 90 R = L-C*ZEICHENPROBLOCK 100 IF RO THEN M§=M§+CHR§(0):GOTO 80 110 FOR 1 =O TO Q-1 120 M(I) = 0 130 FOR J = 1 TO ZEICHENPROBLOCK 140 A=ASC(MID§(M§,3*1+J,1)) 150 M(l)=M(1)*100 160 M(1) = M(I) + A 170 NEXT J 180 NEXT 1 185 PRINT:PRINT"Cryptogramm:":PRINT 190 FOR 1=0 TO Q- 1 200 M=M(I) 210 C=M*M:C=C-INT(C/N)*N:C=C*M:C=C-INT(C/N)*N 220 PRINT'1,USING "";C; 225 PRINT USING "";C; 230 NEXT I 235 PRINT:PRINT 240 GOTO 70
11 ZEICHENPROBLOCK=3 20 INPUT"Eigener Public-Key (Test =0+CR = 94815109) : ";N 30 IF N = 0 THEN N = 94815109 40 INPUT"Eigener Secret-Key (Test =0+CR = 63196467) : ";D 50 IF D=0 THEN D=63196467 51 LINE INPUT"Dateiname fuer entschluesselten Text : ";AUS§ 52 OPEN"0",2,AUS§ 60 LINE INPUT"Cryptogramm von "Datei oder Manuell : ";FRAG§ 70 IF FRAG§="M" OR FRAG§="m" THEN MANUELL=-1:GOTO 90 ELSE MANUELL = 0 80 LINE INPUT"Dateiname der Crypto-Datei : ";DATEI§: OPEN"l",1,DATEI§ 81 IF NOT(MANUELL) THEN PRINT:PRINT"Entschluesselter Text:":PRINT:PRINT 90 IF MANUELL THEN INPUT"Cryptoblock: ":C ELSE IF EOF(1) THEN CLOSE:PRINT"Textende.":PRINT:PRINT:END ELSE INPUT'1,C 100 D1= D:M = 1 110 IF D1/2 = INT(D1/2) THEN 130 120 M = M*C:M = M-INT(M/N)*N 130 C=C*C:C=C-INT(C/N)*N 140 D1=INT(D1/2)-.IF D1 0 THEN 110 150 M§=STR§(M):M§= RIGHT§(M§,LEN(M§)-1):'blank vorweg bei einigen interpr. 160 LX = LEN(M§):IF (LX/2),,INT(LX/2) THEN M§ = "0" + M§:GOTO 160 170 FOR T = 1 TO ZEICHENPROBLOCK 180 ZEICHEN§ = MID§(M§,1 + (T1)*2,2):ZEICHEN§ = CHR§(VAL(ZEICHEN§)) 190 PRINT ZEICHEN§; 200 PRINT'2,ZEICHEN§; 210 NEXT T 220 GOTO 90
10 PRINT"Programm zur Bestimmung des Public- und Secret-Keys" PRINT" = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = : 30 PRINT"Zur Bestimmung des Secret-Keys benoetigen Sie 2 (nur Ihnen bekannte)" 40 PRINT"Primzahlen p und q. Das folgende Programm besteht aus 2 Teilen:" 50 PRINT"Teil 1 sucht im Umfang einer beliebig gewaehlten Zahl die naechste" 60 PRINT"Primzahl, die sich fuer p oder q eignet." 70 PRINT"Teil 2 bestimmt aus den so gefundenen p und q die Secret-und Public-" 80 PRINT"keys." 90 PRINT 100 PRINT"Start Teil 1":PRINT 110 DEFDBL N,P,Q,R,S,X,Y:K=10 120 INPUT"Zu analysierende Zahl (0 fuer Uebergang Programmteil 2) : "; N 130 IF N=0 THEN 280 140 IF M99999999 THEN PRINT"Bitte kleineren Wert waehlen":GOTO 120 150 IF N/2=INT(N/2) THEN N=N-1 160 FOR I=1 TO K 170 X=2+INT((N-2)*RND(0)) 180 Y = 1:P = N-1 190 IF P/2=INT(P/2) THEN 210 200 Y=Y*X:Y=Y-INT(Y/N)*N 210 X=X*X:X=X-INT(X/N)*N 220 P = INT(P/2):IF P 0 THEN 190 230 IF Y,,1 THEN 250 240 NEXT I 250 IF Y=1 THEN PRINT N;"ist alsPrimzahl fuer p oder q geeignet.":GOTO 120 260 PRINT"Noch keine geeignete Zahl gefunden. Teste jetzt Zahl " ;N:N=N-2:GOTO 160 270 280 PRINT"Start Teil 2":PRINT 290 INPUT"Welchen Wert hatten Sie fuer p bestimmt: ";P 300 INPUT"Welchen Wert hatten Sie fuer q bestimmt: ";Q 310 PRINT 320 PRINT"Ihr Public-Key lautet: ";P*Q 330 PRINT"Ihr Secret-Key lautet: ";(2*(P-1)*(Q-1) + 1)/3
cryptihl.ws 850807 0905
|
[HaBi 1]
Verschlüsseln auf Teufel komm raus.