Admin
Регистрация: 05.10.2005
Проживание: Москва
Сообщения: 284
|
Функция шифрования RC4 для PHP
/*Принимает на вход строковый ключ и строковые данные, возвращает преобразованные*/
function rc4 ($pass, $data) {
$n = 8; //основание шифра
$S = range(0, pow(2, $n) - 1);
$ar_data = str_split($data);
$dlen = count($ar_data);
$ar_pass = str_split($pass);
$klen = count($ar_pass);
$j = 0;
for ($i = 0; $i <= pow(2, $n) - 1; $i++){
$j = ($j + $S[$i] + ord($ar_pass[$i % $klen])) % pow(2, $n);
$tmp = $S[$i];
$S[$i] = $S[$j];
$S[$j] = $tmp;
} //for
$i = $j = 0;
for ($m = 0; $m < $dlen; $m++) {
$i = ($i + 1) % pow(2, $n);
$j = ($j + $S[$i]) % pow(2, $n);
$tmp = $S[$i];
$S[$i] = $S[$j];
$S[$j] = $tmp;
$k = $S[($S[$i] + $S[$j]) % pow(2, $n)];
$ar_data[$m] = chr(ord($ar_data[$m]) ^ $k);
}
return implode("", $ar_data);
}
|