38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
Procedure.s CC_encrypt(plainText.s, key, reverse = 0)
|
|
;if reverse <> 0 then reverse the encryption (decrypt)
|
|
If reverse: reverse = 26: key = 26 - key: EndIf
|
|
|
|
Static alphabet$ = "ABCEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
|
|
|
|
Protected result.s, i, length = Len(plainText), letter.s, legal
|
|
If key < 1 Or key > 25: ProcedureReturn: EndIf ;keep key in range
|
|
|
|
For i = 1 To length
|
|
letter = Mid(plainText, i, 1)
|
|
legal = FindString(alphabet$, letter, 1 + reverse)
|
|
If legal
|
|
result + Mid(alphabet$, legal + key, 1)
|
|
Else
|
|
result + letter
|
|
EndIf
|
|
Next
|
|
ProcedureReturn result
|
|
EndProcedure
|
|
|
|
Procedure.s CC_decrypt(cypherText.s, key)
|
|
ProcedureReturn CC_encrypt(cypherText, key, 1)
|
|
EndProcedure
|
|
|
|
If OpenConsole()
|
|
Define key, plainText.s, encryptedText.s, decryptedText.s
|
|
|
|
key = Random(24) + 1 ;get a random key in the range 1 -> 25
|
|
|
|
plainText = "The quick brown fox jumped over the lazy dogs.": PrintN(RSet("Plain text = ", 17) + #DQUOTE$ + plainText + #DQUOTE$)
|
|
encryptedText = CC_encrypt(plainText, key): PrintN(RSet("Encrypted text = ", 17) + #DQUOTE$ + encryptedText + #DQUOTE$)
|
|
decryptedText = CC_decrypt(encryptedText, key): PrintN(RSet("Decrypted text = ", 17) + #DQUOTE$ + decryptedText + #DQUOTE$)
|
|
|
|
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
|
CloseConsole()
|
|
EndIf
|