![](/img/trans.png)
[英]XAMPP PHP OPENSSL openssl_pkey_get_details() crashes webpage
[英]`openssl_pkey_get_details` only returning `bits`, `key` and `type` values (can't access [rsa])
我想有一個有用的JavaScript庫,JSBN工作,簡列如這篇文章 。
基本上,我想建立一個系統,在該系統中,我使用此庫(在客戶端)使用公共密鑰進行加密,然后在服務器端使用PHP和私有密鑰進行解密。
目前,我有一個主要問題:在實現並嘗試了與我所看到的示例中使用的代碼完全相同的代碼之后,基本的openssl_pkey_get_details
函數返回了奇怪的結果。 我使用RSA,4096位,“ sha512”作為我的公共密鑰,並且我還使用了各種類型的密鑰,我在其他示例中也看到了其他類型的密鑰。
當在JustHost服務器上運行時,這是openssl_pkey_get_details
產生的輸出類型:
Array
(
[bits] => 4096
[key] => -----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArLEG2TvFVWV7b5N3ICvN
tdW8/rF8P2lOLpWuA+yPlia1XVoohKl/UIkCrJUF6aS1d1KPbUa00uskWuH6TGSi
+A4B3/PWO9MGH2CklHnjeblYF7shGz6zwGK7wtQxpN67j3nOKBvegRolk6FCidTt
JcFB4+DEfn/avwL6PxLRJYvMoUgHqCQCwh6frIUiwzYttpHB0aOQaSpc4/vXKElq
C4FAmEGfmhlofHB3b3bnz+fYKyzbCkek51NqMFK4e7Gvek3uSKyzXKKD6LQQcXyT
/lxvvXWTb3qkoRzZNdrsAVbmIRLBQfYvHkcFQolh/D7WAVd59S+/vhsf+rDfq42O
Sh4J1ph7dBpcyhzIoNoioCh3SU9fd1mwNG51PFU3AmFUmWPMeuYI47g7Sx+amc0R
nITC60E4hdvr2H8OO0FGk0nxlVPulVwWT7OfcV4xFU2wLdKawq+ErQwkQWTMh+V+
rRDKBiFjQPbgRop7EzYlEA6H92KfI/g7mNMVDoUFd6HBF9Hdr2yF1A8N0nfmoHJ7
q0FDJS/0ZYTnF7r82EBU6PuX1y0r2T9gGh6WQf8c1FvprvPQMz9/UXuyPDJqRfRq
pWopF53l60yrrpG7LZpo2NyL1TaVeOLlB8rwSeYrPQn6WBpzIf7FxThJPKMqy8EP
OaJ5DkVyRGP6tqhH75hlHCUCAwEAAQ==
-----END PUBLIC KEY-----
[type] => 0
)
注意, type
返回為0
; 這應該意味着該類型確實是RSA密鑰。 根據php.net的說法,應該是這樣:在type
之上,應該還有另一個元素rsa
,其中包含n
和e
值的e
值。 使用JSBN創建RSAKey
對象需要這些值,但我無法訪問它們。
這是我的一些源代碼:
$config = array(
"digest_alg" => , 'sha512'
"private_key_bits" => 4096,
"private_key_type" => OPENSSL_KEYTYPE_RSA
);
// Create the private and public key
$resource = openssl_pkey_new($config);
// Place the private key into $pk
openssl_pkey_export($resource, $pk);
$kh = openssl_pkey_get_private($pk);
$details = openssl_pkey_get_details($kh);
print_r($details);
php 5.2.17(在CLI中:php -v),OS Linux,OpenSSL 1.0.1e-fips同樣存在問題,2013年2月11日。
@ php 5.3.14都可以正常工作,並且存在$ details ['rsa']:操作系統Windows,OpenSSL 1.0.1g,2014年4月7日,也適用於PHP 5.3.3,操作系統Linux,OpenSSL 1.0.1f,2014年1月6日。
所以,也許與openssl版本有關的問題
openssl version
低於1.0.1f 2014年1月6日或PHP版本
php -v
低於5.3。
UPD:在OS Linux和OpenSSL 1.0.1f下,請勿返回['rsa'] @ php 5.2.17 2014年1月6日。
因此,我的結論是您的服務器在PHP <5.3.0下運行。
這是正確的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.