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

use*_*382 2 php openssl ssl-certificate public-key

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

print_r(openssl_pkey_get_details(openssl_csr_get_public_key(\ path of csr)));

var_dump(openssl_get_publickey(file_get_contents('\\path to cert'))); 
Run Code Online (Sandbox Code Playgroud)

还有很多.但我能得到的是这样的:

----- BEGIN PUBLIC KEY ----- 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

谢谢.

Pau*_*rer 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"]);
Run Code Online (Sandbox Code Playgroud)