static function encryptArray($message, RSA $rsa) { $rsa = $rsa->rsa; $rsaBytes = $rsa['size'] / 8; $messageLen = strlen($message); $code = ''; // Массив разбивается на блоки, соответствующие размерности ключа for ($i = 0; $i < $messageLen; $i += $rsaBytes - 1) { $source = '0'; $codeBlock = ''; // Рассчитываем число из блока (2 байта 0х53 0х8А) -> число 0х538А -> десятичный!!! вид +100500 // bc работает с десятиричной системой for ($k = 0; $k < $rsaBytes - 1 && $k + $i < $messageLen; $k++) { $source = bcadd(ord($message[$i + $k]), bcmul($source, 256)); } // блок представляет из себя сгенерированное число // Это число шифруется при помощи ключей $block = RSA::encryptBlock($source, $rsa); // Разбираем число (зашифрованное значение) на байты for ($k = 0; $k < $rsaBytes; $k++) { $byte = bcmod($block, 256); $block = bcdiv($block, 256); $codeBlock = chr($byte) . $codeBlock; } $code .= $codeBlock; // Собираем зашифрованный массив } return $code; }