On Dec 17, 2007 7:06 PM, Grace Shibley <[EMAIL PROTECTED]> 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.

[EMAIL PROTECTED] ;]

-Casey

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

Reply via email to