【问题标题】:How to extract public key in proper format using openssl in php?如何在 php 中使用 openssl 提取正确格式的公钥?
【发布时间】:2012-05-27 13:29:40
【问题描述】:

我用不同的方法做了很多尝试,在php中使用openssl提取可显示格式的公钥。 例如

print_r(openssl_pkey_get_details(openssl_csr_get_public_key(\csr路径)));

var_dump(openssl_get_publickey(file_get_contents('\\path to cert'))); 

还有更多。但我能得到的只是这样的:

-----开始公钥----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClNami19DpcxlYAaZNxHV27r2V gDQbkZhiayaDfcwjYStrRaU8Hk1yg76gfhgayssIa6Y7Cek4uH5fV PE6Nj/s9QAkcvpzZDJasdYmj8BGyNaHBA9eHB3Dmc

-----END PUBLIC KEY-----

我怎样才能以下面给出的格式提取它:

95 ae 9a 4e db f1 6d 15 55 9f 86 52 28 54 21 3f 88 1b 21 81 2a 01 e3 35 dd 21 51 44 f4 18 bf 85 fb f0 6a 9a 9c 15 7f 46 83 b8 1e 05 b7 b9 1a 9d fd 58 0b fa 45 01 f2 3b 3b bc 1b f6 a3 20 7b 96 3e f7 5d d6 c2 a7 56 29 02 94 ba 0c 29 da 51

谢谢。

【问题讨论】:

  • 那个十六进制转储是什么格式的?
  • 说实话,我不确定格式的名称。但我是通过从浏览器查看证书详细信息得到的。

标签: php openssl ssl-certificate public-key


【解决方案1】:

浏览器列出的公钥只是模数的十六进制编码。在openssl_pkey_get_details 返回的数据结构中,这由n 表示。 (如果您好奇为什么,请查看RSA 算法。)要在 PHP 中获取它,只需执行以下操作:

$pkey_details = openssl_pkey_get_details(openssl_pkey_get_public(file_get_contents("test.pem")));
echo bin2hex($pkey_details["rsa"]["n"]);

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 2021-03-04
    • 1970-01-01
    • 2016-10-03
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多