Re: PHP translation needed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Dec 17, 2007 11:22 PM, Casey <heavyccasey@xxxxxxxxx> wrote:
>
> On Dec 17, 2007 7:06 PM, Grace Shibley <shibleyg@xxxxxxxxx> wrote:
> > Hi Everyone,
> >
> > We have an encryption function that was written in another language that we
> > needed translated to PHP.
> >
> > Here's the function:
> >
> > function rc4 pText, pKey
> >     -- initialize
> >     repeat with i = 0 to 255
> >         put i into S1[i]
> >     end repeat
> >
> >     put 0 into i
> >     repeat with n = 0 to 255
> >         add 1 to i
> >         if i > length(pkey) then put 1 into i
> >         put chartonum(char i of pKey) into S2[n]
> >     end repeat
> >
> >     put 0 into j
> >     repeat with i = 0 to 255
> >         put (j + S1[i] + S2[i]) mod 256 into j
> >         put S1[i] into temp
> >         put S1[j] into S1[i]
> >         put temp into S1[j]
> >     end repeat
> >
> >     -- encrypt/decrypt
> >     put 0 into i ; put 0 into j
> >     repeat for each char c in pText
> >         put chartonum(c) into tChar
> >
> >         put (i + 1) mod 256 into i
> >         put (j + S1[i]) mod 256 into j
> >         put S1[i] into temp
> >         put S1[j] into S1[i]
> >         put temp into S1[j]
> >         put (S1[i] + S1[j]) mod 256 into t
> >         put S1[t] into K
> >
> >         put numtochar(tChar bitXor K) after tOutput
> >     end repeat
> >
> >     return tOutput
> > end rc4
> >
> > Can anyone help us with this?  We don't mind paying via PayPal :)
> >
> > Thanks!
> > grace
> >
>
> function rc4($pText, $pKey) {
>         // initialize
>         $S1 = range(0, 255);
>         $S2 = array();
>
>         $i = 0;
>         for ($n=0; $n<=255; $n++) {
>                 $i++;
>                 if ($i > strlen($pkey))
>                         $i = 1;
>                 $S2[] = ord($pKey[$i]);
>         }
>
>         $j = 0;
>         for ($i=0; $i<=255; $i++) {
>                 $j = ($j + $S1[$i] + $S2[$i]) % 256;
>                 $temp = $S1[$i];
>                 $S1[$i] = $S1[$j];
>                 $S1[$j] = $temp;
>         }
>
>         // encrypt/decrypt
>         $i = $j = 0;
>         $tOutput = '';
>
>         foreach (str_split($pText) as $c) {
>                 $tChar = ord($c);
>
>                 $i = ($i+1) % 256;
>                 $j = ($j+$S1[$i]) % 256;
>                 $temp = $S1[$i];
>                 $S1[$i] = $S1[$j];
>                 $S1[$j] = $temp;
>                 $t = ($S1[$i] + $S1[$j]) % 256;
>                 $K = $S1[$t];
>
>                 $tOutput .= chr($tChar ^ $K);
>         }
>
>         return $tOutput;
> }
>
> I don't know what language this is. I'm curious -- what is it? It
> might not work; it's untested except for syntax errors.

    That's written in Revolution.  I just glanced at your translation,
Case, but it looks good with a (literally) two-second once-over.

-- 
Daniel P. Brown
[Phone Numbers Go Here!]
[They're Hidden From View!]

If at first you don't succeed, stick to what you know best so that you
can make enough money to pay someone else to do it for you.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux