• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/crypt.php
  • Класс: CSteganos
  • Вызов: CSteganos::__HideData
function __HideData()
{
	if ($this->containerType == "bmp")
	{
		$levelBase = intval(8 / $this->level);
		$num = 0;
		for ($i = 0; $i < $this->level; $i++)
		{
			$num = $num << 1;
			$num = $num + 1;
		}
		$num = 255 ^ $num;

		$data = sprintf("BSAW%08x", mb_strlen($this->data)).$this->data;

		for ($i = 0, $j = 55, $len = mb_strlen($data); $i < $len; $i++, $j += $levelBase)
		{  
			$temp = sprintf("%08s", decbin(ord(mb_substr($data, $i, 1))));
			for ($k = 0; $k < $levelBase; $k++)
			{
				$this->containerData[$j + $k] = chr(ord($this->containerData[$j + $k]) & $num);

				$n = 0;
				for ($t = 0; $t < $this->level; $t++)
					$n += ($temp[$k * $this->level + $t] == '1') ? (1 << ($this->level - 1 - $t)) : 0;

				if ($n != 0)
					$this->containerData[$j + $k] = chr(ord($this->containerData[$j + $k]) + $n);
			}
		}
	}
	elseif ($this->containerType == "txt")
	{
		$data = "";
		for ($i = 0, $n = mb_strlen($this->data); $i < $n; $i++)
		{
			$data .= $this->__ConvertToBitString(ord($this->data[$i]));
		}

		$containerDataLength = sprintf("%08X", mb_strlen($this->containerData));
		for ($i = 6; $i >= 0; $i -= 2)
		{
			sscanf(mb_substr($containerDataLength, $i, 2), "%X", $b);
			$data .= $this->__ConvertToBitString($b);
		}

		$this->containerData .= $data."rn";
	}
}