RosettaCodeData/Task/Caesar-cipher/Yabasic/caesar-cipher.basic

36 lines
1.2 KiB
Plaintext

REM *** By changing the key and pattern, an encryption system that is difficult to break can be achieved. ***
text$ = "You are encouraged to solve this task according to the task description, using any language you may know."
key$ = "desoxirribonucleic acid" // With a single character you get a Caesar encryption. With more characters the key is much more difficult to discover.
CIPHER = 1 : DECIPHER = -1
print text$ : print
encrypted$ = criptex$(text$, key$, CIPHER)
a = open("cryptedText.txt", "w") : if a then print #a encrypted$ : close #a end if
print encrypted$ : print
print criptex$(encrypted$, key$, DECIPHER)
sub criptex$(text$, key$, mode)
local i, k, delta, longtext, longPattern, longkey, pattern$, res$
pattern$ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,;:()-"
longPattern = len(pattern$)
longtext = len(text$)
longkey = len(key$)
for i = 1 to longtext
k = k + 1 : if k > longkey k = 1
delta = instr(pattern$, mid$(text$, i, 1))
delta = delta + (mode * instr(pattern$, mid$(key$, k, 1)))
if delta > longPattern then
delta = delta - longPattern
elseif delta < 1 then
delta = longPattern + delta
end if
res$ = res$ + mid$(pattern$, delta, 1)
next i
return res$
end sub