Talk:Playfair cipher: Difference between revisions
Content added Content deleted
(added a couple of REXX examples that handle multiple Xes in the plain text.) |
|||
Line 55: | Line 55: | ||
════════════════Playfair encryption──► decryption──► encryption worked. |
════════════════Playfair encryption──► decryption──► encryption worked. |
||
</pre> |
</pre> |
||
::Of course this kind of thing is doable. But it's also unspecified behavior. I adopted something which I felt was closer to the spirit of the spec, for the J implementation, mangling some repeated X's in the process. Here's how that looks using your test cases: |
|||
::<lang J> choose 'IJ' |
|||
setkey 'playfirexm' |
|||
encrypt 'I like XXX better than XX beer.' |
|||
RPBTXMGWDIWIXEZBLOGWDIXE |
|||
decrypt encrypt 'I like XXX better than XX beer.' |
|||
ILIKEXXQBETXERTHANXQBEER |
|||
encrypt 'triple xxx is like, thirty, dude. No XXXX though. Bummer.' |
|||
UIBIARGWMRNFBTIVBMIUAGVCROQEGWIWDSWCBCZRIXEM |
|||
decrypt encrypt 'triple xxx is like, thirty, dude. No XXXX though. Bummer.' |
|||
TRIPLEXQXISLIKETHIRTYDUDENOXXQXTHOUGHBUMMERX</lang> |
Revision as of 18:56, 28 May 2014
Inadequate spec
How should one encode a sentence containing "xxx"? Or should the implementation crash for that case? --Rdm (talk) 05:04, 28 May 2014 (UTC)
The REXX program handles these two examples (below) without problems.
Note the ( [left parenthesis] is used to parse the plaintext from any specified options.
output when using the input of: ( I like XXX better than XX beer.
old cipher key: Playfair example. ◄───using the default. new cipher key: PLAYFIREXM omit char: J double char: X original text: I like XXX better then XX beer. cleansed text: IL IK EX XX BE TT ER TH EN XX BE ER ILIKEXXXBETTERTHENXXBEER encrypted text: RP BT XM MM MM DI WI VI IU DM QR MM DI MX EM RPBTXMMMMMDIWIVIIUDMQRMMDIMXEM plain text: IL IK EX XX XX BE TX TE RT HE NX XX BE XE RX ILIKEXXXXXBETXTERTHENXXXBEXERX possible text: IL IK EX XX BE TT ER TH EN XX BE ER ILIKEXXXBETTERTHENXXBEER original text: ILIKEXXXBETTERTHENXXBEER ════════════════Playfair encryption──► decryption──► encryption worked.
output when the input is: (triple xxx is like, thirty, dude. No XXXX though. Bummer.
old cipher key: Playfair example. ◄───using the default. new cipher key: PLAYFIREXM omit char: J double char: X original text: triple xxx is like, thirty, dude. No XXXX though. Bummer. cleansed text: TR IP LE XX XI SL IK ET HI RT YD UD EN OX XX XT HO UG HB UM ME R TRIPLEXXXISLIKETHIRTYDUDENOXXXXTHOUGHBUMMER encrypted text: UI BI AR MM MM MR NF BT IV BM IU AG VC RO QE MM MM MM ZB NV HB CT IM IX EM UIBIARMMMMMRNFBTIVBMIUAGVCROQEMMMMMMZBNVHBCTIMIXEM plain text: TR IP LE XX XX XI SL IK ET HI RT YD UD EN OX XX XX XX TH OU GH BU MX ME RX TRIPLEXXXXXISLIKETHIRTYDUDENOXXXXXXXTHOUGHBUMXMERX possible text: TR IP LE XX XI SL IK ET HI RT YD UD EN OX XX XT HO UG HB UM ME R TRIPLEXXXISLIKETHIRTYDUDENOXXXXTHOUGHBUMMER original text: TRIPLEXXXISLIKETHIRTYDUDENOXXXXTHOUGHBUMMER ════════════════Playfair encryption──► decryption──► encryption worked.
- Of course this kind of thing is doable. But it's also unspecified behavior. I adopted something which I felt was closer to the spirit of the spec, for the J implementation, mangling some repeated X's in the process. Here's how that looks using your test cases:
- <lang J> choose 'IJ'
setkey 'playfirexm' encrypt 'I like XXX better than XX beer.'
RPBTXMGWDIWIXEZBLOGWDIXE
decrypt encrypt 'I like XXX better than XX beer.'
ILIKEXXQBETXERTHANXQBEER
encrypt 'triple xxx is like, thirty, dude. No XXXX though. Bummer.'
UIBIARGWMRNFBTIVBMIUAGVCROQEGWIWDSWCBCZRIXEM
decrypt encrypt 'triple xxx is like, thirty, dude. No XXXX though. Bummer.'
TRIPLEXQXISLIKETHIRTYDUDENOXXQXTHOUGHBUMMERX</lang>