Пример #1
0
 static function decryptArray($code, RSA $rsa, $messageLen)
 {
     $rsa = $rsa->rsa;
     $rsaBytes = $rsa['size'] / 8;
     $codeLen = strlen($code);
     $message = '';
     $messageLenNow = 0;
     for ($i = 0; $i < $codeLen; $i += $rsaBytes) {
         $block = '0';
         $messageBlock = '';
         for ($k = 0; $k < $rsaBytes; $k++) {
             $block = bcadd(ord($code[$i + $k]), bcmul($block, 256));
         }
         $source = RSA::decryptBlock($block, $rsa);
         for ($k = 1; $k < $rsaBytes; $k++) {
             $byte = bcmod($source, 256);
             $source = bcdiv($source, 256);
             if ($messageLenNow + $k <= $messageLen) {
                 // опускает последние нули БЛОК(8ерф98рпяыщзпрпо0ц) деш (Привет мир!0000000)
                 $messageBlock = chr($byte) . $messageBlock;
             }
         }
         $message .= $messageBlock;
         $messageLenNow += $rsaBytes - 1;
     }
     return $message;
 }