Bifid cipher: Difference between revisions

m
small cosmetic changes, added program output
(Applesoft BASIC)
m (small cosmetic changes, added program output)
Line 214:
 
REM REPORT
160 GOSUB 200"ENCRYPT
165 PRINT M$M$"FOR "W" X "W" POLYBIUS:": M$ = CHR$ (13): FORIFOR I =1TOW 1 TO W:? PRINT , MID$ (K$,(I - 1) * W + 1,W): NEXT
170 PRINT "ENCRYPTED: "E$
180 GOSUB 300"DECRYPT
190 PRINT "DECRYPTED: "U$;: RETURN
 
REM ENCRYPT A$ RETURNS E$
200 GOSUB 400 : L = LEN (A$):E$ = "": U$ = "" : IF NOT L THEN RETURN
210 FOR I = 1 TO L
220 C = ASC ( MID$ (A$,I,1)) : IF X(C) AND Y(C) THEN U$ = U$ + CHR$ (C)
230 NEXT I
240 L = LEN (U$) : IF NOT L THEN RETURN
250 FOR I = 1 TO L : C = ASC ( MID$ (U$,I,1)) : A(I) = X(C) : A(I + L) = Y(C) : NEXT I
260 FOR I = 1 TO L * 2 STEP 2:E$ = E$ + MID$ (K$,(A(I) - 1) * W + A(I + 1),1): NEXT I
270 RETURN
 
REM DECRYPT E$ RETURNS U$
300 GOSUB 400 : L = LEN (E$):U$ = "": IF NOT L THEN RETURN
310 FOR I = 1 TO L:C = ASC ( MID$ (E$,I)):B(I * 2 - 1) = X(C) : B(I * 2) = Y(C): NEXT I
320 FOR I = 1 TO L:U$ = U$ + MID$ (K$,(B(I) - 1) * W + B(L + I),1): NEXT I
330 RETURN
 
REM POLYBIUS K$ RETURNS X(255),Y(255)
400 IF K$ = P$ AND LEN (K$) THEN RETURN
410 IF XY THEN FOR I = 0 TO 255:X(I) = 0:Y(I) = 0: NEXT I
420 IF NOT XY THEN DIM X(255),Y(255),A(512),B(512) : XY = 1
430 IF K$ = "" THEN FOR I = 1 TO 25:K$ = K$ + CHR$ (I + 64 + (I > 9)): NEXT I
440 L = LEN (K$):W = INT ( SQR (L - 1) + 1):I = 1:N = 1:K = ASC ("0")
450 FOR X = 1 TO W
460 FOR Y = 1 TO W
470 C$ = MID$ (K$,I,1) : IF C$ = "" THEN FOR C = K TO 255: IF X(C) THEN NEXT C : STOP
480 IF C$ = "" THEN C$ = CHR$ (C) : K$ = K$ + C$ : K = C + 1
490 C = ASC ( C$): Y(C) = Y:X(C) = X:I = I + 1: IF C$ = "J" THEN N = 0
500 NEXT Y,X
510 IF N THEN Y( ASC ("J")) = Y( ASC ("I")):X( ASC ("J")) = X( ASC ("I"))
520 P$ = K$
530 RETURN</syntaxhighlight>
{{out}}
<pre>FOR 5 X 5 POLYBIUS:
ABCDE
FGHIK
LMNOP
QRSTU
VWXYZ
ENCRYPTED: DQBDAXDQPDQH
DECRYPTED: ATTACKATDAWN
 
FOR 5 X 5 POLYBIUS:
BGWKZ
QPNDS
IOAXE
FCLUM
THYVR
ENCRYPTED: UAEOLWRINS
DECRYPTED: FLEEATONCE
 
FOR 6 X 6 POLYBIUS:
.'ABC
DEFGHI
JKLMNO
PQRSTU
VWXYZ0
123456
ENCRYPTED: QDFVQLBFJSAPLAE.GS'DJMAV56BWCVS6VILAYNCVZDOMV3 T4M.2K
DECRYPTED: THE INVASION WILL START ON THE FIRST OF JANUARY 2023.
</pre>
 
=={{header|C++}}==
<syntaxhighlight lang="c++">
413

edits