• Модуль: 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;
}