簡體   English   中英

“ openssl_pkey_get_details”僅返回“ bits”,“ key”和“ type”值(無法訪問[rsa])

[英]`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 ,其中包含ne值的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM