• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/rsabcmath.php
  • Класс: CRsaBcmathProvider
  • Вызов: CRsaBcmathProvider::getRndPrime
static function getRndPrime($cnt)
{
	$btn = intval($cnt / 8);
	$bn = $cnt % 8;
	$ret = '0';

	while(self::bitlenght($ret) != $cnt)
	{
		$str = '';
		for($i = 0; $i < $btn; $i++) 
			$str .= chr(rand() & 0xff);

		$n = rand() & 0xff;
		$n |= 0x80;
		$n >>= 8 - $bn;
		$str .= chr($n);
		$ret = self::raw2int($str);

		if(!bccomp(bcmod($ret, '2'), '0')) 
			$ret = bcadd($ret, '1');

		while(!self::is_prime($ret)) 
			$ret = bcadd($ret, '2');
	}
	return $ret;
}