Я получил открытый ключ и сообщение,
$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);
всегда возвращать ложь.
Как я могу это исправить?
Я решаю это после изменения
$temp = str_split($payload2,125);
в
$temp = str_split($payload2,128);
размер не может быть слишком маленьким
Других решений пока нет …