繁体   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