openssl_public_encrypt работал, но openssl_public_decrypt не удалось

Я получил открытый ключ и сообщение,

    $msg = "blablabla";
$public = '-----BEGIN PUBLIC KEY-----
(some normal public key)
-----END PUBLIC KEY-----';

RsaEncode может зашифровать

Я делаю RSA кодировать сообщение

function RsaEncode($msg,$publicKey){
$temp = str_split($msg,117);
$payload = array();
foreach ($temp as $key => $value) {
openssl_public_encrypt($value, $encrypted, $publicKey);
array_push($payload, $encrypted);
}
$payload =implode($payload);
$payload= base64_encode($payload);
return $payload;
}

Эта функция возврата в порядке, я успешно закодировал сообщение,
после того, как я отправил результат, я получил ответ $ response, зашифрованный с помощью закрытого ключа.

поэтому я декодирую его открытым ключом:

function RsaDecode($response,$publicKey){
$payload = array();
$payload2 = base64_decode($response);
$temp = str_split($payload2,125);
foreach ($temp as $key => $value) {
openssl_public_decrypt($value, $encrypted, $publicKey);
array_push($payload, $encrypted);
}
$payload =implode($payload);
$result = utf8_encode($payload);
return $result;
}

$ publicKey — это тот же $ publicKey,

заявление :

openssl_public_decrypt($value, $encrypted, $publicKey);

всегда возвращать ложь.

Как я могу это исправить?

0

Решение

Я решаю это после изменения

$temp = str_split($payload2,125);

в

$temp = str_split($payload2,128);

размер не может быть слишком маленьким

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]