我有两个钥匙。对于一个,它完全可以正常工作,并以resource(368) of type (OpenSSL key)
给出响应,但对于另一个键,它只是返回false。
在两种情况下,我都不提供路径,而是字符串本身。
其中其工作的键是这样的:
-----BEGIN RSA PRIVATE KEY-----
MIIJKAIBAAKCAgEA74waKCtYqw7U7gE93BCn0CPmulFd1K8AaJqqBjOLe//okAuA
<...........................................................>
MGgCk1mrd65nf6JWsxb3RVcQ7jYxyFs3Pr4LFcgn1K0aTLnlwarBFjt+J3Y=
-----END RSA PRIVATE KEY-----
并且它不起作用的键是这样的:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,14CA8(removing some values)2B6244
LwBvVX6TbdS9XYg0xywoLbhiaYK5UE6SQnATXJ8fXfJit+F4XcOfmWyQn+UsJRnM
<...........................................................>
s8M/Fe7YpkORsGSzQ6f5YslfmbmCsdCFDiBnTaIe45NP8IBULWY/vm45bYFteKUs
-----END RSA PRIVATE KEY-----
PS:为了安全起见,我隐藏了大部分密钥。
有关键值的任何事情也影响openssl引发错误吗?
CODE:
$pkey = openssl_pkey_get_private(my_private_key_in_string_form);
编辑:
我在研究中发现,第二个密钥是加密形式,而第一个是原始形式。但是我仍然找不到如何将已加密的私钥从已经创建的密钥转换为原始格式的方法。
[查看密钥,有效的密钥不受密码短语保护,您说失败的密钥受到密码短语保护,对openssl_pkey_get_private()
的调用也没有用于密码短语的第二个可选参数。我指的是https://www.php.net/manual/en/function.openssl-pkey-get-private.php]中的文档
因此,如果您的私钥已加密,则必须指定密码短语,以便openssl_pkey_get_private()
API可以正确读取密钥