2012-05-21 47 views
2

我已經做了很多嘗試,使用不同的方式,在php中使用openssl提取可顯示格式的公鑰。 例如如何在php中使用openssl以適當的格式提取公鑰?

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

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

等等。但是,所有我能得到的是這樣的:

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

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

我怎樣才能提取它在下面給出的格式:

95 AE 9A 4E分貝F1 6D 15 55 9F 86 52 28 54 21 3F 88 1B 21 81 2A 01 35 E3 21 DD 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

謝謝。

+0

什麼格式是十六進制轉儲? – sarnold

+0

說實話,我不確定格式的名稱。但我通過瀏覽器查看證書詳細信息得到了這個結果。 – user1101382

回答

4

瀏覽器列出的公鑰只是模數的十六進制編碼。在由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"]); 
相關問題