51 lines
1.1 KiB
Plaintext
51 lines
1.1 KiB
Plaintext
ori$ = "Beware the Jabberwock, my son! The jaws that bite, the claws that catch!"
|
|
key$ = filter$("vigenerecipher")
|
|
print ori$
|
|
print key$
|
|
enc$ = encrypt$(ori$, key$)
|
|
print enc$
|
|
dec$ = decrypt$(enc$, key$)
|
|
print dec$
|
|
|
|
end
|
|
|
|
function encrypt$(text$, key$)
|
|
flt$ = filter$(text$)
|
|
encrypt$ = ""
|
|
j = 1
|
|
for i = 1 to len(flt$)
|
|
m$ = mid$(flt$, i, 1)
|
|
m = asc(m$)-asc("A")
|
|
k$ = mid$(key$, j, 1)
|
|
k = asc(k$)-asc("A")
|
|
j = (j mod len(key$)) + 1
|
|
c = (m + k) mod 26
|
|
c$=chr$(asc("A")+c)
|
|
encrypt$=encrypt$+c$
|
|
next
|
|
end function
|
|
|
|
function decrypt$(flt$, key$)
|
|
decrypt$ = ""
|
|
j = 1
|
|
for i = 1 to len(flt$)
|
|
m$ = mid$(flt$, i, 1)
|
|
m = asc(m$)-asc("A")
|
|
k$ = mid$(key$, j, 1)
|
|
k = asc(k$)-asc("A")
|
|
j = (j mod len(key$)) + 1
|
|
c = (m - k + 26) mod 26
|
|
c$=chr$(asc("A")+c)
|
|
decrypt$=decrypt$+c$
|
|
next
|
|
end function
|
|
|
|
function filter$(ori$)
|
|
'a..z A..Z go caps, other skipped
|
|
filter$=""
|
|
for i = 1 to len(ori$)
|
|
c$ = upper$(mid$(ori$,i,1))
|
|
if instr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", c$) then filter$ = filter$ + c$
|
|
next
|
|
end function
|