Vigenère cipher: Difference between revisions
Content added Content deleted
No edit summary |
(add RPL) |
||
Line 3,808: | Line 3,808: | ||
ciphertext = LXFOPVEFRNHR |
ciphertext = LXFOPVEFRNHR |
||
decrypted = ATTACKATDAWN |
decrypted = ATTACKATDAWN |
||
</pre> |
|||
=={{header|RPL}}== |
|||
As the encoding and decoding programs would differ by only one instruction (plus instead of minus), they have been merged into a single function that decodes if the input text is in uppercase only, and encodes otherwise. To encode a uppercase-only text, a space (or any punctuation sign) must be put somwehere. |
|||
≪ → key |
|||
≪ 1 CF { } |
|||
1 3 PICK SIZE '''FOR''' j |
|||
OVER j DUP SUB NUM |
|||
'''IF''' DUP 97 ≥ OVER 122 ≤ AND '''THEN''' 32 - '''END''' |
|||
'''IF''' DUP 65 ≥ OVER 90 ≤ AND '''THEN''' 65 - + '''ELSE''' 1 SF DROP '''END''' |
|||
'''NEXT''' |
|||
SWAP DROP "" |
|||
1 3 PICK SIZE '''FOR''' j |
|||
OVER j GET |
|||
key j 1 - key SIZE MOD 1 + DUP SUB NUM 64 - |
|||
'''IF''' 1 FC? '''THEN''' + '''ELSE''' - '''END''' |
|||
26 MOD 65 + CHR + |
|||
'''NEXT''' |
|||
SWAP DROP |
|||
≫ ≫ ‘<span style="color:blue">VIGENERE</span>’ STO |
|||
"Beware the Jabberwock!" <span style="color:blue">VIGENERE</span> |
|||
DUP <span style="color:blue">VIGENERE</span> |
|||
{{out}} |
|||
<pre> |
|||
2: "FVPVDZBCIATWNZZRSTD" |
|||
1: "BEWARETHEJABBERWOCK" |
|||
</pre> |
</pre> |
||