Dear Randall:

For ASCII compliant ciphertext just limit the key domain to 32 - 63 decimal. Of course you should then double the length of the keystring to increase the security to that provided using the 64 value domain.

To really claim that solving the algorithm is trivial, you will have to ultimately find someone who can do it. At present the world is working on it, largely because of the most disturbing way it has been implemented.

I'm going back to my VB. - SeeYa!

# CipherTextI.pm # # Charles Prichard 6-16-01 # # ################################################# package CipherTextI; use strict; use integer; use bytes; ################################################# # PUBLIC Subroutine # ################################################# sub new($) { my $class = shift; my $self = {}; bless $self, ref $class || $class; $self->{xString} = undef; $self->{xStr} = undef; $self->{R_KEY} = undef; $self->{ATT} = undef; $self->{S_KEY} = undef; $self->{cipher_key} = undef; $self->{RSORT} = []; $self->init(@_); return $self; } sub init($){ my $self = shift; my ($params) = shift; my @temp1 = split /\;/, $params; my %params = (); my @temp2=(); foreach my $x (@temp1){ @temp2 = split /\=/, $x; $self->{$temp2[0]} = $temp2[1]; } $self->{RSORT} = [3,28,7,5,39,62,34,32,56,18,17,6,29,49,63,45,13,1 +3,29,40,2,17,17,9,12,61,56,23,55,37,31,13,27,52,8,23,38,53,9,60,31,30 +,39,27,37,14,14,34,8,29,58,10,25,3,19,37,11,35,52,39,48,24,22,19]; $self->{S_KEY} = $self->Make_shiftedKeys(); return; } ################################################# # PUBLIC Subroutine # ################################################# sub encipher($) { my $self = shift; my $MSG = shift;; $MSG = $self->Encode($self->Encode($MSG,$self->{R_KEY}),$self->{S_ +KEY}); return $MSG; } ################################################# # PUBLIC Subroutine # ################################################# sub decipher($) { my $self = shift; my $MSG = shift;; $MSG = $self->Decode($self->Decode($MSG,$self->{S_KEY}),$self->{R_ +KEY}); return $MSG; } ################################################# # PRIVATE Subroutine # ################################################# sub Make_shiftedKeys(){ my $self = shift; my $shift = $self->setAttribute(); $self->{S_KEY} = $self->modifyKeys(); if (($shift % 2) == 1){$self->{S_KEY} = (substr($self->{S_KEY},1,( +length $self->{S_KEY})));} else {$self->{S_KEY} = (substr($self->{S_KEY},0,(length $self->{S_ +KEY}) - 1));} my $key; my $v; for (my $i=0; $i <= ($shift - 1) % length $self->{S_KEY}; $i++){ + my $key = substr($self->{S_KEY},0,1); $v = ord($key) - 32; $self->{S_KEY} = (substr($self->{S_KEY},1,(length $self->{ +S_KEY}) - 1)); $self->{S_KEY} .= ord($v ^ $self->{RSORT}[$v] + 32); } return $self->{S_KEY}; } ################################################# # PRIVATE Subroutine # ################################################# sub setAttribute(){ my $self = shift; $self->{ATT} = 0x00; for (my $i=0; $i < (length $self->{R_KEY}); $i++){ $self->{ATT} = $self->{ATT} ^ (ord(substr($self->{R_KEY},$i,1) +) - 0x20); } return $self->{ATT}; } ################################################# # PRIVATE Subroutine # ################################################# sub modifyKeys(){ my $self = shift; my S_KEY = ""; my $i, $x; For $x = 1 To length($self->{R_KEY}) $i = ord(substr($self->{R_KEY}, $x, 1)) - 32 S_KEY = S_KEY + ord(($i ^ $self->{RSORT}[$i] ^ $self->{ATT}) + + 32) Next x return S_KEY; } ################################################# # PRIVATE Subroutine # ################################################# sub Encode($$){ my $self = shift; $self->{xString} = shift; $self->{cipher_key} = shift; $self->cipher(); return $self->{xStr}; } ################################################# # PRIVATE Subroutine # ################################################# sub Decode($$){ my $self = shift; $self->{xString} = shift; $self->{cipher_key} = shift; $self->cipher(); return $self->{xStr}; } ################################################# # PRIVATE Subroutine # ################################################# sub cipher(){ my $self = shift; $self->{xStr} = ""; my $keyval; my $xch; my @akeys = split "",$self->{cipher_key}; my $keylen = length $self->{cipher_key}; my $i = (length $self->{xString} % $keylen); # DATA DEPENDENT +SHIFT for(my $x=0; $x < length ($self->{xString}); $x++){ $keyval = ord($akeys[$i]) - 0x20; $xch = ord(substr($self->{xString},$x,1)); if ($xch > 0x7f){ $xch = $xch - 0x21;} if ($xch > 0x1f){ $xch = ($keyval ^ ($xch - 0x20)) + 0x20; # Apply ciph +er } if ($xch > 0x7f){ $xch = $xch + 0x21;} $self->{xStr} .= chr($xch); $i++; if ($i == $keylen){$i = 0;} } return; } 1;

In reply to Revision to the method that defines the modified key ... by Steeeeeve
in thread CipherText by NodeReaper

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.