57 lines
1.4 KiB
Plaintext
57 lines
1.4 KiB
Plaintext
PROGRAM "caesarcipher"
|
|
VERSION "0.0001"
|
|
|
|
DECLARE FUNCTION Entry()
|
|
INTERNAL FUNCTION Encrypt$(p$, key%%)
|
|
INTERNAL FUNCTION Decrypt$(p$, key%%)
|
|
|
|
FUNCTION Entry()
|
|
txt$ = "The five boxing wizards jump quickly"
|
|
key%% = 3
|
|
PRINT "Original: "; txt$
|
|
enc$ = Encrypt$(txt$, key%%)
|
|
PRINT "Encrypted: "; enc$
|
|
PRINT "Decrypted: "; Decrypt$(enc$, key%%)
|
|
END FUNCTION
|
|
|
|
FUNCTION Encrypt$(p$, key%%)
|
|
e$ = p$ ' In order to avoid iterative concatenations
|
|
FOR i = 0 TO LEN(p$) - 1
|
|
t@@ = p${i} ' or (slower) t@@ = ASC(p$, i + 1)
|
|
SELECT CASE TRUE
|
|
CASE (t@@ >= 'A') AND (t@@ <= 'Z'):
|
|
t@@ = t@@ + key@@
|
|
IF t&& > 'Z' THEN
|
|
t@@ = t@@ - 26
|
|
END IF
|
|
CASE (t@@ >= 'a') AND (t@@ <= 'z'):
|
|
t@@ = t@@ + key%%
|
|
IF t@@ > 'z' THEN
|
|
t@@ = t@@ - 26
|
|
END IF
|
|
END SELECT
|
|
e${i} = t@@
|
|
NEXT i
|
|
END FUNCTION e$
|
|
|
|
FUNCTION Decrypt$(p$, key%%)
|
|
e$ = p$ ' In order to avoid iterative concatenations
|
|
FOR i = 0 TO LEN(p$) - 1
|
|
t@@ = p${i} ' or (slower) t@@ = ASC(p$, i + 1)
|
|
SELECT CASE TRUE
|
|
CASE (t@@ >= 'A') AND (t@@ <= 'Z'):
|
|
t@@ = t@@ - key%%
|
|
IF t@@ < 'A' THEN
|
|
t@@ = t@@ + 26
|
|
END IF
|
|
CASE (t@@ >= 'a') AND (t@@ <= 'z'):
|
|
t@@ = t@@ - key%%
|
|
IF t@@ < 'a' THEN
|
|
t@@ = t@@ + 26
|
|
END IF
|
|
END SELECT
|
|
e${i} = t@@
|
|
NEXT i
|
|
END FUNCTION e$
|
|
END PROGRAM
|