openssl_pkey_get_private()函數(shù)用于獲取私鑰。
openssl_pkey_get_private()函數(shù)將返回您的私鑰。
函數(shù)openssl_pkey_get_private()從給定的公鑰/私鑰返回私鑰。例如.pem文件中的內(nèi)容。
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ù)將返回資源標(biāo)識符。如果密鑰生成失敗,它將返回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); } ?>
這將產(chǎn)生以下結(jié)果:
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); } ?>
這將產(chǎn)生以下結(jié)果:
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); } ?>
這將產(chǎn)生以下結(jié)果:
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); } ?>
這將產(chǎn)生以下結(jié)果:
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 )