密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥,私钥不能泄露
公钥不见了,可以通过私钥找回
找回公钥的函数是
openssl_pkey_get_details($private_key_pem);
成功,返回包含密钥详情的数组,失败返回 FALSE . 返回的数组中包含了如下索引: bits (位数), key (表示公钥的字符串) 和 type (如下密钥类型之一: OPENSSL_KEYTYPE_RSA, OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_EC 或者 未知类型返回1).
示例代码
$private_key_pem="-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIv+4XT8UGJeoCAggA
MBQGCCqGSIb3DQMHBAhRkLucuCGVegSCAoAtnK6UU6yfNElnrvsS87LrivkYGnGn
v+sk/o893I8oYlgpMZ3E6JFE3J340O8xnFGEfX7QQb8Qkah6xcDCuwmCfA9WolFW
lClUtjMu94xCHI9QuEaiuhX9+1qezYasqEpre9+AVciVPdxpENsqeQh7fc/lCNfW
uAjTA5WIMGwWTZmT2yhauQBGm7uD5YP7nCBlgV15wUr9uIA0YBPI1skbyfrxE4s5
7Dumi/SXzHDEikhRL7sUAdXl0t5AHSWZ1Q5ED0dme7ZbEBcvBxRhqg7bag3C/sZ6
jomseOmtF0Ene0tbJJDuoQVu33N+CKfuMi681xvl8Ht6Lacq6gVEQTUGYCZzG/s+
eVtOI4fbt2vrhPQl+tUCZeu9Bo22fEhI0UUdZaUFiMkF+roB1JdiY2L9aU3AE7OT
grI2wgCmZ/nJX5L3KN65TDRxMMyTjewZjF/RBnrBXaoF3QK9nYi3XkLdn/8SwOY/
AsLoA9B00Nqz18FH96S0u70od1kzZqqqLKlYksYvpZBhQsZmc9RJfuMt3H8Vjw+r
3LlMd5/BofYPaCKQA7sFPgDyy8N10PWKoZRhvDqtxbwhw8kVvwbMphENxQtxIjJP
I7kQB3gCgKLwHRKNmFrhJ+CGAu4TGk/PP07+PqshtareNQvFxGb/7vLt7bucDvz0
vvv91QK5xNq6Tg9FeiyycL0FLbGTWKHXYyeD2EXWwhV8evXK2ggKlQZ6MmPIdvWr
XHgCAShK9dVQ8A7SflmSPK0mfSyDrAQOFunDZrYDc/8TnYb/IqVjDpnNFRJ1ALx3
xPrsCve1KdLATnW8bEO5KRdS2GEz+fgNZMxelY2jBu/+m7qIBwJLn7ls
-----END ENCRYPTED PRIVATE KEY-----";
#校验私钥,如果有证书密码,则填写第二参数
$private_key_pem=openssl_get_privatekey ($private_key_pem,"123");
$pekey_detail = openssl_pkey_get_details($private_key_pem);
//公钥
var_dump($pekey_detail['key']);