我有以下步骤来执行解密
我的代码如下所示:
$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解码公钥,我收到错误的不是有效的公钥。我实现上述两个步骤时遗漏或做错了什么?
答案 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));