10 ! SAVE MO0:KRYPTO.BAC 100 ! Programmet {r h{mtat fr}n tidningen 'MIKRODATORN' Nr: 3 1983 110 ! 120 ! Programlistningen d{r inneh}ller ett namn, K-D H|glund, men 130 ! det {r oklart om denne gjort programmet. F|rmodligen har han 140 ! konverterat programmet till ABC800:s Basic. 150 ! 160 ! ######################################## 170 ! ## ## 180 ! ## Programmet avskrivet och ins{nt av ## 190 ! ## ## 200 ! ## <4716> Jinge Fl~cht ## 210 ! ## ## 220 ! ######################################## 230 ! 240 ! Provat p} ABC802 250 ! 260 ! 270 ; CHR$(12) 280 EXTEND 290 DOUBLE 300 ; CHR$(12) 310 ; 'Tryck p} siffran noll (0) om Du vill DE-kryptera... '; : GET W$ 320 IF W$='0' THEN 670 330 ; CHR$(12) 340 ; ' Krypteringsprogram.' 350 ; ' ===================' 360 DIM Sifferblock(60),Klartext$=160 370 Grupper=3 380 Innyckel=7.2636541E+07 390 ; : ; 'Skriv in Ditt meddelande! (Stora bokst{ver!)' 400 ; : INPUT Klartext$ 410 IF Klartext$='' THEN 600 ELSE 420 420 L{ngd=LEN(Klartext$) 430 Kvot=INT(L{ngd/Grupper) 440 Rest=L{ngd-Kvot*Grupper 450 IF Rest>0 THEN Klartext$=Klartext$+CHR$(0) : GOTO 420 460 ; : ; 'Omvandling till ASCII-block, och kryptering p}g}r.' 470 FOR I=1 TO Kvot 480 FOR J=1 TO Grupper 490 Asciigrupp=ASCII(MID$(Klartext$,3*(I-1)+J,1)) 500 Sifferblock(I)=Sifferblock(I)*100 510 Sifferblock(I)=Sifferblock(I)+Asciigrupp 520 NEXT J 530 NEXT I 540 ; CUR(12,0) 'Text ut i krypterad form: ' : ; 550 FOR I=1 TO Kvot 560 Block=Sifferblock(I) 570 GOSUB 610 580 ; Utkrypto; 590 NEXT I 600 END 610 Utkrypto=Block*Block 620 Utkrypto=Utkrypto-INT(Utkrypto/Innyckel)*Innyckel 630 Utkrypto=Utkrypto*Block 640 Utkrypto=Utkrypto-INT(Utkrypto/Innyckel)*Innyckel 650 RETURN 660 END 670 ! 680 ON ERROR GOTO 680 690 ; CHR$(12) 700 ; ' Dekrypteringsprogram.' 710 ; ' =====================' 720 ! 730 Innyckel=7.2636541E+07 : Utnyckel=4.8412523E+07 740 ; : INPUT 'Ange antal sifferblock som skall behandlas. 'Blockantal 750 DIM Inkod(Blockantal) 760 FOR I=1 TO Blockantal 770 ; CUR(6,0) SPACE$(50) 780 ; CUR(6,0) 'Skriv in block nr ';I; 790 INPUT Inkod(I) 800 GOSUB 830 810 NEXT I 820 END 830 Dublett=Utnyckel : Asciigrupp=1 840 IF Dublett/2=INT(Dublett/2) GOTO 870 850 Asciigrupp=Asciigrupp*Inkod(I) 860 Asciigrupp=Asciigrupp-INT(Asciigrupp/Innyckel)*Innyckel 870 Inkod(I)=Inkod(I)*Inkod(I) 880 Inkod(I)=Inkod(I)-INT(Inkod(I)/Innyckel)*Innyckel 890 Dublett=INT(Dublett/2) : IF Dublett>0 GOTO 840 900 Delgrupp1=INT(Asciigrupp/10000) 910 Delgrupp2=INT((Asciigrupp-Delgrupp1*10000)/100) 920 Delgrupp3=Asciigrupp-Delgrupp1*10000-Delgrupp2*100 930 Deltext$=CHR$(Delgrupp1,Delgrupp2,Delgrupp3) 940 Klartext$=Klartext$+Deltext$ 950 ; CUR(10,0) 'Dechiffrerad text t o m block nr ' I ' :' 960 ; CUR(12,0) Klartext$ 970 RETURN