Vigenère cipher: Difference between revisions

Content added Content deleted
(New OCaml implementation for >= 4.05)
(Added Quackery.)
Line 3,020: Line 3,020:
WMCEEIKLGRPIFVMEUGXQPWQVIOIAVEYXUEKFKBTALVXTGAFXYEVKPAGY
WMCEEIKLGRPIFVMEUGXQPWQVIOIAVEYXUEKFKBTALVXTGAFXYEVKPAGY
BEWARETHEJABBERWOCKMYSONTHEJAWSTHATBITETHECLAWSTHATCATCH</pre>
BEWARETHEJABBERWOCKMYSONTHEJAWSTHATBITETHECLAWSTHATCATCH</pre>


=={{header|Quackery}}==

<lang Quackery> [ [] swap witheach
[ upper
dup char A char Z 1+ within
iff join else drop ] ] is onlycaps ( $ --> $ )

[ onlycaps
[] swap witheach
[ char A - join ] ] is cipherdisk ( $ --> [ )

[ [] swap witheach
[ 26 swap - join ] ] is deciphering ( [ --> [ )

[ behead tuck join swap ] is nextkey ( [ --> [ n )

[ dip nextkey + dup
char Z > if [ 26 - ] ] is encryptchar ( [ c --> [ c )
[ $ "" swap rot
onlycaps witheach
[ encryptchar
swap dip join ]
drop ] is vigenere ( $ [ --> $ )

[ cipherdisk vigenere ] is encrypt ( $ $ --> $ )

[ cipherdisk deciphering vigenere ] is decrypt ( $ $ --> $ )

$ "If you reveal your secrets to the wind, you should "
$ "not blame the wind for revealing them to the trees." join
say "Encrypted: " $ "Kahlil Gibran" encrypt dup echo$ cr
say "Decrypted: " $ "Kahlil Gibran" decrypt echo$</lang>

{{out}}

<pre>Encrypted: SFFZCCKDFRLLYUYDMNXMUJTBDHLHQYJGPLSUYUSOVZZJMRMRDHLHQYJNPIRRFEHWQYMBIVMGYTOPBCKMT
Decrypted: IFYOUREVEALYOURSECRETSTOTHEWINDYOUSHOULDNOTBLAMETHEWINDFORREVEALINGTHEMTOTHETREES</pre>


=={{header|R}}==
=={{header|R}}==