【问题标题】:openssl_public_encrypt worked , but openssl_public_decrypt failedopenssl_public_encrypt 工作,但 openssl_public_decrypt 失败
【发布时间】:2018-02-08 05:01:30
【问题描述】:

我得到了一个公钥和一条消息,

    $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;
}

这个函数返回OK,我编码成功, 在我发送结果后,我收到了一个用私钥加密的响应 $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);

总是返回 false。

我该如何解决?

【问题讨论】:

    标签: php rsa public-key


    【解决方案1】:

    我改后解决了

    $temp = str_split($payload2,125);
    

    $temp = str_split($payload2,128);
    

    尺寸不能太小

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-04
      • 2011-07-14
      • 2020-09-16
      • 2012-06-07
      • 2014-01-21
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      相关资源
      最近更新 更多