Here's a cheap way to get a non-repeating xor pattern of the proper length. It works by seeding rand with the key and relying on repeatability. The key is a single perl integer. The symmetric property* of xor encryption is handy.

# Usage: cypher KEY, LIST; sub cypher { srand shift; my $string = join '', @_; my $here = 0; while ( 2*$here < length( $string)) { vec( $string, $here, 16) ^= int rand 1<<16; $here++; } $string; } my $encoded = cypher 12345, <<'EOT'; Listen, my children, and you shall hear Of the midnight ride of Paul Revere. EOT print map {sprintf '%x ', $_ } unpack 'C*', $encoded; print $/, cypher 12345, $encoded;
All the map ... sprintf .... unpack stuff is just to coerce the binary encoded string into ascii, to avoid frying a tty's tiny brain.

This is better than rot13, but probably is still weak crypto. The keyspace is small. Decryption depends on having the same particular implementation of rand. Regularities of rand can be exploited. But it is certainly enough to discourage casual readers.

* the same procedure is used for both encryption and decryption.

After Compline,
Zaxo


In reply to Re: Anyone has simple encryption mechanism? by Zaxo
in thread Anyone has simple encryption mechanism? by soon_j

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.