44 lines
805 B
Plaintext
44 lines
805 B
Plaintext
CHAR FUNC Shift(CHAR c BYTE code)
|
|
CHAR base
|
|
|
|
IF c>='a AND c<='z THEN
|
|
base='a
|
|
ELSEIF c>='A AND c<='Z THEN
|
|
base='A
|
|
ELSE
|
|
RETURN (c)
|
|
FI
|
|
c==+code-base
|
|
c==MOD 26
|
|
RETURN (c+base)
|
|
|
|
PROC Encrypt(CHAR ARRAY in,out BYTE code)
|
|
INT i
|
|
|
|
out(0)=in(0)
|
|
FOR i=1 TO in(0)
|
|
DO
|
|
out(i)=Shift(in(i),code)
|
|
OD
|
|
RETURN
|
|
|
|
PROC Decrypt(CHAR ARRAY in,out BYTE code)
|
|
Encrypt(in,out,26-code)
|
|
RETURN
|
|
|
|
PROC Test(CHAR ARRAY in BYTE code)
|
|
CHAR ARRAY enc(256),dec(256)
|
|
|
|
PrintE("Original:") PrintE(in)
|
|
Encrypt(in,enc,code)
|
|
PrintF("Encrypted code=%B:%E",code) PrintE(enc)
|
|
Decrypt(enc,dec,code)
|
|
PrintF("Decrypted code=%B:%E",code) PrintE(dec)
|
|
PutE()
|
|
RETURN
|
|
|
|
PROC Main()
|
|
Test("The quick brown fox jumps over the lazy dog.",23)
|
|
Test("The quick brown fox jumps over the lazy dog.",5)
|
|
RETURN
|