openssl_pkey_get_private()函數(shù)用于獲取私鑰。
openssl_pkey_get_private()函數(shù)將返回您的私鑰。
函數(shù)openssl_pkey_get_private()從給定的公鑰/私鑰返回私鑰。例如.pem文件中的內容。
openssl_pkey_get_private ( mixed $key [, string $passphrase = "" ] ) : resource
| 序號 | 參數(shù) | 描述 |
|---|---|---|
| 1 | key | 您可以從.pem文件中獲取密鑰,也可以使用openssl_pkey_new()生成的私鑰。 |
| 2 | passphrase | 如果指定的密鑰已被加密了(受密碼保護),可選參數(shù) passphrase 是必須要的 |
如果沒有錯誤,PHP openssl_pkey_get_private()函數(shù)將返回資源標識符。如果密鑰生成失敗,它將返回false。
此函數(shù)將從大于5.0.0的PHP版本開始工作。
openssl_pkey_get_private()的工作:
<?php
//生成新的私鑰(和公鑰)對
$privkey = openssl_pkey_new();
openssl_pkey_export($privkey, $yourprivatekey);
$testprivatekey = openssl_pkey_get_private($yourprivatekey);
if ($testprivatekey === false) {
var_dump(openssl_error_string());
} else {
var_dump($testprivatekey);
}
?>這將產生以下結果:
resource(3) of type (OpenSSL key)
openssl_pkey_get_private() 和 openssl_pkey_get_details()的工作-
<?php
$privkey = openssl_pkey_new();
openssl_pkey_export($privkey, $yourprivatekey);
$testprivatekey = openssl_pkey_get_private($yourprivatekey);
if ($testprivatekey === false) {
var_dump(openssl_error_string());
} else {
//var_dump($testprivatekey);
$key_details = openssl_pkey_get_details($testprivatekey);
print_r($key_details);
}
?>這將產生以下結果:
Array
(
[bits] => 2048
[key] => -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnO1F0Gt03mgxLcDpRxlm
VEh8sfIfan5o11EcoLaEwaTyKgMNm7A4Rs9LcG3fwkNjXo8XNRQv6OSrhl8y00AX
+cPUb78Qp/K3INmyXr8UUVWy0BT+Rxq5kez1TmZhpITxUYLScEL8DPcghFyfstRa
5hP8hc0cwYM6N4ieOlXIxrdmbzTn92MeyiTstTvHxt8aGKbSdpmksWyNeqke22kM
9pBfEsf98XFh5HoQBQaQF6GXL5y00PWIdki7DTzYtXXPRGcQl/53M5HrGGdP0kGS
uD4YOFXRWYtQR1ZYLa4Ej+BP0eOpfxXiME0aaH1/2iWqyi+bsvkdgFbu92j5ptsr
yQIDAQAB
-----END PUBLIC KEY-----
[rsa] => Array
(
[n] => ??E?kt?h1-??GfTH|??j~h?Q??????*
??8F?Kpm??Cc^?5/??_2?@???o??? ?^?QU???G????Nfa???Q??pB?? ?\???Z??????:7??:U??fo4??c?$?;?????v???l?z??i??_???qa?z???/?????vH?
<?u?Dg??w3??gO?A??>8U?Y?PGVX-???O???0Mh}?%??/????V??h???+?
[e] =>
[d] => MK??C|??Y5??5}Z?R0;?S?I?V??????M??0?Lw?r?????R??|??C???d?W?}?#????v?[9iZI??1??&!???A?;8K?%}??`@
??????????}??n b?]K?L#?~Sg?' 81!??2R]??????`?vl?&?Z?@-q???7u?#????.???d??????]?*Z-?'?|?? ?M
j???????
[p] => ?*&5IXM?U?$u?'????d,?$x??iR?1?????A?Cxi`%?FR?5?
??!?a??C???t?^????f?$???V?+????]v"?+=??I?w??RN??<?P?e??
3-?"???^????|_?-?l??lD,???=?26??XGg5?@}q??T.?j????A??#??m,>#YN}??,pk}g
[dmp1] => ??
?l5o?5L???????h)I?+??D?n?J!??ycP???1
=u>&??h-HT????K??j;?um
?oO\?e??.????
X?%s????_?|Za3??z$?\n1?N1?u?j)????z?
[dmq1] => ??n[???????<??t??^??P???)?F@ni??
?gH?(???@#s?!+$?D??]????{?????I?l???[$???>i q|?$?G??I'R??^c
"????e"k
[iqmp] => ??ij? ??a6?W#?:??#bS??ó??S?r#?C??87])4??Z???`?????????w???.?a?y??@ ???p???s?XP.{?o9h?Bq????EU??n ???&S??tE?
)
[type] => 0
)使用密碼的openssl_pkey_get_private()工作:
<?php
$privkey = openssl_pkey_new();
openssl_pkey_export($privkey, $testkey, 'helloworld');
$testprivatekey = openssl_pkey_get_private($testkey, 'helloworld');
if ($testprivatekey === false) {
var_dump(openssl_error_string());
} else {
//var_dump($testprivatekey);
$key_details = openssl_pkey_get_details($testprivatekey);
print_r($key_details);
}
?>這將產生以下結果:
Array
(
[bits] => 2048
[key] => -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs4HV+NM9dQ1ssuxb9PhM
64Yn8RHgv7YKK33nZudmk6SCOr9yRo7immp+bkaA0Lt/9ONJP+UF5VCltpdNdHLb
GDTo+TkK5NdTJDalON3L9EhB4cJeQaQQh59uJGf39Et0BJiYiINXsNdlc/pig1/Z
XDRyhEtqQ6nZJkOIIWO0gpdj9xj2naq/wy6Oas4p3/A7EvN5nB22xfEVIptKUZzi
YWV4Bs5y2OM3GRwVv+jLYKQ49S/ZKq7MpdCxcXC6YxyrlEIz4PL9cWRtybK3BINv
JnCWrfWRhUtlAY/CvfXrq2PhXwHVcebsDOPob6A71TcZMirxFZVyqkC+4rGX+5be
PwIDAQAB
-----END PUBLIC KEY-----
[rsa] => Array
(
[n] => ?????=u
l??[??L?'??
+}?f?f???:?rF??j~nF?л??I???P???Mtr?4??9
??S$6?8???HA??^A???n$g??Kt????W??es?b?_?\4r?KjC??&C?!c???c??????.?j?)??;?y????"?JQ??aex?r??7???`?8?/?*??бqp?c??B3???qdm???o&p?????Ke????c?_?q????o?;?72*??r?@??????
[e] =>
[d] => ??e???e?$%
s?Q??EUA?D??Bu??34$?v?#????P?\??uD??(?z?w+?z????a?5???X????????q?P????%O+3??]+o?3?FM?*?Z^L??k?/?Ty??/??;?)?sB?Np?5?@?x?,8?z2?#?SyM?o?X?.???;?????K??? ??????qsLLD
^???"j??*=Io{????7`a??{?l???B??????#???\?
[p] => ???à?tY?@???[N??n?p????f? ???7/\?????y<ox?,?(損?i?w?X?P?5?@??s BD?C?????| ?*???JH??/??|`?????+?3??]??oc??fI?Ze?`?C?>U??|?"???:U???^??L????g? ?u|@z????F%6?X/?
??ú??+?_?Yh:???59}?D?&???Gc
[dmp1] => i?*/
?U???6??
???|?>3?HP?hN??.?G???????9???cxj*?!??0????R??:?9E(?Z??$?&?&7>?9.Ih??E?z/?,?QR?"?'?;???^???xq
[dmq1] => |?w??`???????
??3?????b?????AZ?t???.8???Q]??F?iI??2)?{<??G^?t??u?Mb??4I?YL?E?S?8a!?6??&Q?(?^????????é???
[iqmp] => \p5??N??
$WC?j?? ?|?{>d???????Y
f?????9?3?$rF(ON??>??? ????%??`(?
&?op? ?}=C+??????b???#?G"?0T.???G`t????^???\7?
)
[type] => 0
)使用.pem文件處理openssl_pkey_get_private():
<?php
//創(chuàng)建私鑰
$privkey = openssl_pkey_new();
openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/fortesting.pem');
//使用帶有私鑰的.pem文件。
$testprivatekey = openssl_pkey_get_private(file_get_contents('C:/xampp/htdocs/modules/openssl/fortesting.pem'));
if ($testprivatekey === false) {
var_dump(openssl_error_string());
} else {
//var_dump($testprivatekey);
$key_details = openssl_pkey_get_details($testprivatekey);
print_r($key_details);
}
?>這將產生以下結果:
Array
(
[bits] => 2048
[key] => -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqaka1+sKh3D4HgIDzER6
vr/DI5u6h1QF6Xm1q/nOduTn0vlx4bLv+QEbcElXV1Bss4W7wOZRkMIOwj4xcT+e
PGKaN95JUyxC/NQ13+F6K5yUk0ish36BVusrHt0wdZj28f63gHm824D0yDnn+aJr
s+vSuMppErUD/i0QUFnO86ypHi/zeb+QBEif4a82RtfwRIVUtE/Sxy08ct+1ogA9
pdBd47elLmcekz/dtSUqpUjLj5SNojS7AJCZ5LNxnLOzN3ryCQXGaAn8KHQ284Xs
jlYBjSjXFLY/1fLDYDpQGOApoBj2vK9Io8MxFU3uss79Ezb6LwKZG6CmzlbldBrJ
YQIDAQAB
-----END PUBLIC KEY-----
[rsa] => Array
(
[n] => ????
?p??Dz???#???T?y????v????q???pIWWPl?????Q???>1q??<b?7?is,b??5??z+???h??~?v?+?0u??????y????9???k????i??-py?? ?y??h??6f??d?t?o??-
[d] => ?9:??????Y????"???*xu?&??gt???? &"???{??!Px??r?hn#??!c%?u
????x??7z????&??|??ǔv????XT????[w"?=e??m?1R_JH?/?hX??.?E????&&'?:?/:??????.I?zdx@?6??)??i??1L?z??"X??>?????]?t????Rh??g??!8?Y9?G?r???9z?????z??~?????jo_???
[p] => ????+?iy???m:#`BF?????????Bj>?????f?2W%?eIAn? ???????.o? v?`tgg??a?L?%??
L[??\6??`??sx]?~?bU?fF?/Oy?6?+~v??7u?
[q] => ǎ???u(?.L???l??o?Gc?x???????@4??r? `i?i?X??v??'?33X??c??_???m8??M???5#t"??^?{?j vSLi?X??mh?I?8?
1t?
[dmp1] => ???6?$5?Eg?Q?1F"??8y??V`??\??A?{????0?
??ym?6?dUI<?8?f???\??"K?Khja5?z
?w?'?m?F9?nv?r?FP]??i?%???L?1?m'?Y??4
@lth7?
[dmq1] => il5w*?eG?~??z?2?{??*?"???????`?????y?r????????%@?lq???De??U?z???
?s.??[
????G?l_?h?????8¢H4N?7$?25???L?
[iqmp] => 9"l@ǚ?O?[I)}??K?6A/f5S? ????\?u???>??C????? ?z??]?B?-ry/????D??w??H|?g:????8???s????(?B?Eo?`0
)