- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/captcha.php
- Класс: CCaptcha
- Вызов: CCaptcha::CryptData
function CryptData($data, $type, $pwdString)
{
$type = strtoupper($type);
if ($type != "D")
$type = "E";
$res_data = "";
if ($type == 'D')
$data = base64_decode(urldecode($data));
$key[] = "";
$box[] = "";
$temp_swap = "";
$pwdLength = mb_strlen($pwdString);
for ($i = 0; $i <= 255; $i++)
{
$key[$i] = ord(mb_substr($pwdString, ($i % $pwdLength), 1));
$box[$i] = $i;
}
$x = 0;
for ($i = 0; $i <= 255; $i++)
{
$x = ($x + $box[$i] + $key[$i]) % 256;
$temp_swap = $box[$i];
$box[$i] = $box[$x];
$box[$x] = $temp_swap;
}
$cipher = "";
$a = 0;
$j = 0;
for ($i = 0, $n = mb_strlen($data); $i < $n; $i++)
{
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$temp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $temp;
$k = $box[(($box[$a] + $box[$j]) % 256)];
$cipherby = ord(mb_substr($data, $i, 1)) ^ $k;
$cipher .= chr($cipherby);
}
if ($type == 'D')
$res_data = urldecode(urlencode($cipher));
else
$res_data = urlencode(base64_encode($cipher));
return $res_data;
}