I haven't fully figured out a proof, but my intuition is that the following statement is true:

Encrypting each byte with modulo arithmetic is secure if and only if encrypting each byte with xor is secure.

They're both plaintext byte + key byte → cyphertext byte mappings such that if you know any two of the bytes, the third can be calculated deterministically with no outside factors. I'm pretty sure that any algorithms where that is true are essentially equivalent from a security standpoint.

Xor is just fast and trivially easy to implement in Perl.

Encode (plaintext is the string "txt" and key is the string "key"):

$ perl -MMIME::Base64=encode_base64 -E'say encode_base64(shift^shift)' + txt key Hx0N

Decode: (cyphertext is "Hx0N" and the key is still the string "key")

$ perl -MMIME::Base64=decode_base64 -E'say decode_base64(shift)^shift' + Hx0N key txt

In reply to Re^5: crypto with core modules only by tobyink
in thread crypto with core modules only by morgon

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.