Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: A real challenge

by c-era (Curate)
on Jul 16, 2001 at 19:22 UTC ( #97041=note: print w/ replies, xml ) Need Help??


in reply to A real challenge

I've got it figured out. The CR is removed. It is then encoded with an XOR. The XOR pattern is, 67,111,112,121,114,105,103,104,116,32,169,32,50,48,48,48,32,65,99,116,105,118,101,83,116,97,116,101,32,84,111,111,108,32,67,111,114,112,46 (which prints out to 'Copyright © 2000 ActiveState Tool Corp.'). Here is a how to use it:

# Our decode string my @decode = ( 67,111,112,121,114,105,103,104,116,32,169,32,50,48,48,48,32,65,99,116, +105,118,101,83,116,97,116,101,32,84,111,111,108,32,67,111,114,112,46) +; # Our encoded string my @encoded = ( 96,78,82,90,86,76,65,79,92,9, 131,11,30,29,30,31,16,112,81,71, 93,67,83,100,76,88,78,94,28,105, 81,80,44,42,96,46,48,51,106,6, 41,55,49,59,35,44,36,57,110,230, 112,99,98,99,100,117,23,52,44,48, 44,62,15,41,63,43,5,42,119,14, 13,15,68,38,9,21,24,71,41,4, 28,20,28,6,23,25,6,83,221,85, 68,71,72,73,90,58,31,9,23,124, 70,114,86,66,80,64,6,115,71,70, 70,11,111,66,92,95,30,114,93,67, 77,71,95,80,80,77,26,146,28,15, 14,15,112,42,98,34,54,42,50,32, 21,51,41,61,47,107,24,34,33,35, 112,18,61,33,36,123,21,56,40,32, 40,50,59,53,42,127,201,42,17,81, 82,83,68,36,5,19,1,31,15,56, 24,12,26,10,80,37,29,28,24,85, 53,24,10,9,84,56,19,13,7,120, 74,70,74,87,4,140,6,21,24,25, 26,11,109,78,90,70,70,84,97,71, 85,65,83,23,108,86,85,87,28,126, 81,77,48,36,96,46,50,58,54,44, 33,47,60,105,227,107,126,125,126,127, 112,16,49,39,61,35,51,4,44,56, 46,62,124,9,49,48,12,42,96,14, 16,19,74,38,9,23,17,27,3,12, 4,25,78,198,80,67,66,67,68,85, 55,20,12,16,12,30,47,9,31,126, 21,82,61,1,27,76,2,16,7,29, 7,14,46,10,80,13,26,12,71,13, 26,67,198,68,91,94,87,17,124,47, 65,79,99,); # Our unecoded string my @unencoded; for my $char (@encoded){ # XOR the encoded string with the decode character push @unencoded, ($char ^ $decode[0]); # Rotate the decode string push @decode, shift @decode; } for my $char (@unencoded){ if ($char == 10){ # Print a newline if the charater is 10 print "\n"; } else { # Print out the unencoded string print chr($char); } }
I hope you enjoy.


Comment on Re: A real challenge
Select or Download Code
Re: Re: A real challenge
by larryk (Friar) on Jul 16, 2001 at 20:30 UTC
    or even
    #!perl -w use strict; sub encode_decode ($) { my $txt = shift; my $key = 'Copyright 2000 ActiveState Tool Corp.' x length $txt; my $enc = $txt ^ substr $key, 0, length $txt; return wantarray ? unpack "C*", $enc : $enc; } undef $/; my @encoded_ascii = encode_decode <DATA>; # one or other #my $encoded_string = ~~encode_decode <DATA>; # of these two __DATA__ #!"#$%&'()*+,-./0123456789:;<=>?@ #ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` #abcdefghijklmnopqrstuvwxyz{|}~ #!"#$%&'()*+,-./0123456789:;<=>?@ #ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` #abcdefghijklmnopqrstuvwxyz{|}~ #!"#$%&'()*+,-./0123456789:;<=>?@ #ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` #abcdefghijklmnopqrstuvwxyz{|}~ print "Show me the encoding!\n";

    "Argument is futile - you will be ignorralated!"

      You're making $key too long by a factor of 39. You want something more like this (where @encoded is the given byte array):

      my $encodedString = pack('c*', @encoded); my $key = 'Copyright 2000 ActiveState Tool Corp.'; $key = $key x ( length($encodedString) / length($key) + 1); $key = substr($key, 0, length($encodedString)); print $key ^ $encodedString;
        I know - it's just so that the key can be any length without having to do the length X/length y + 1 thing all on one line :) I have to substr it anyway so what's a few bytes between system calls! I wouldn't have been so frivolous if I was getting the key from STDIN though!

        "Argument is futile - you will be ignorralated!"

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://97041]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2014-09-02 02:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (18 votes), past polls