使用RSA的解密问题

时间:2011-09-19 10:32:23

标签: php rsa encryption

我有以下步骤来执行解密

  1. base64解码响应
  2. 使用RSA1024公钥解密前128个字节。密钥采用base64编码的X509格式,带有PKCS1填充。
  3. 我的代码如下所示:

    $decodedString = $this->base64UrlDecode($string); //does proper url decoding                
    $publicKey = file_get_contents("public.key",true); 
    $pub_key = openssl_get_publickey($publicKey);   
    openssl_public_decrypt($decodedString,$decrypted,$pub_key,OPENSSL_PKCS1_PADDING);
    var_dump($decrypted);
    

    我无法在$ decrypted变量中获得任何内容。如果我在使用它之前尝试base64解码公钥,我收到错误的不是有效的公钥。我实现上述两个步骤时遗漏或做错了什么?

2 个答案:

答案 0 :(得分:1)

请参阅openssl_pkey_get_public的评论:

http://www.php.net/manual/en/function.openssl-pkey-get-public.php#101513

PKCS1填充似乎对该功能造成了问题。

答案 1 :(得分:0)

这实际上是我得到回应的问题。通过在base64解码之前执行urldecode,我能够获得正确的结果。

$decodedString = $this->base64UrlDecode(urldecode($string));