2

我已经使用不同的方式进行了很多尝试,在 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'))); 

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

-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClNami19DpcxlYAaZNxHV27r2V gDQbkZhiayaDfcwjYStRaU8Hk1yg76gfhgayssIa6Y7Cek4uH5fV PE6Nj/s9QAkcvpzZDJasdYmj8BGyVwVbRelToMNvXTc eNaH93Dm+OA4TE9yoQIDAQAB

-----结束公钥-----

如何以下面给出的格式提取它:

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 b5d 8d f9 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

谢谢你。

4

1 回答 1

5

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

$pkey_details = openssl_pkey_get_details(openssl_pkey_get_public(file_get_contents("test.pem")));
echo bin2hex($pkey_details["rsa"]["n"]);
于 2012-10-16T04:00:26.000 回答