如何使用php中的openssl以适当的格式提取公钥?

时间:2012-05-21 01:29:01

标签: php openssl ssl-certificate public-key

我使用不同的方法进行了许多尝试,使用php中的openssl以可显示格式提取公钥。 E.g。

  

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

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

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

-----开始公钥----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClNami19DpcxlYAaZNxHV27r2V gDQbkZhiayaDfcwjYStRaU8Hk1yg76gfhgayssIa6Y7Cek4uH5fV PE6Nj / s9QAkcvpzZDJasdYmj8BGyVwVbRelToMNvXTc eNaH93Dm + OA4TE9yoQIDAQAB

----- 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

谢谢。

1 个答案:

答案 0 :(得分:5)

浏览器列出的公钥只是模数的十六进制编码。在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"]);