Heim > Backend-Entwicklung > PHP-Tutorial > php openssl生成的rsa密钥给android和ios使用注意哪些问题?

php openssl生成的rsa密钥给android和ios使用注意哪些问题?

WBOY
Freigeben: 2016-06-06 20:38:49
Original
1037 Leute haben es durchsucht

有一个项目需要php通过openssl 生产rsa蜜月供android和ios使用。目前已经调试两天了,android那边使用密钥的时候一直有问题。

<code>    X509EncodedKeySpec expects DER-encoded data, not PEM-encoded
</code>
Nach dem Login kopieren
Nach dem Login kopieren

这个是android遇到的其中一个报错信息

下面是我的生成密钥的代码

<code>    // generate 2048-bit RSA key
    $config = array(
        'private_key_bits' => $length,
        'private_key_type' => OPENSSL_KEYTYPE_RSA
    );
    $pkGenerate = openssl_pkey_new($config);

    // get the private key
    openssl_pkey_export($pkGenerate,$pkGeneratePrivate); // NOTE: second argument is passed by reference

    // get the public key
    $pkGenerateDetails = openssl_pkey_get_details($pkGenerate);
    $pkGeneratePublic = $pkGenerateDetails['key'];

    // free resources
    openssl_pkey_free($pkGenerate);

    // fetch/import public key from PEM formatted string
    // remember $pkGeneratePrivate now is PEM formatted...
    // this is an alternative method from the public retrieval in previous
    $pkImport = openssl_pkey_get_private($pkGeneratePrivate); // import
    $pkImportDetails = openssl_pkey_get_details($pkImport); // same as getting the public key in previous
    $pkImportPublic = $pkImportDetails['key'];
    openssl_pkey_free($pkImport); // clean up
    return array('public'=>$pkGeneratePublic,'private'=>$pkGeneratePrivate);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

之前对rsa加密没什么了解,今天是第一次使用,又遇到这个跨语言的问题。我自己是可以使用生成的密钥进行加密和解密的。
请了解相关问题的人指点一下。

这里有篇文章和我问的问题很相似,但是我对rsa,openssl不太熟悉,所以文章里面说的东西我也看不懂,供能看懂的人参考一下。
http://security.stackexchange.com/questions/15948/how-to-supply-openssl-generated-private-public-keys-to-ios-android-apps

回复内容:

有一个项目需要php通过openssl 生产rsa蜜月供android和ios使用。目前已经调试两天了,android那边使用密钥的时候一直有问题。

<code>    X509EncodedKeySpec expects DER-encoded data, not PEM-encoded
</code>
Nach dem Login kopieren
Nach dem Login kopieren

这个是android遇到的其中一个报错信息

下面是我的生成密钥的代码

<code>    // generate 2048-bit RSA key
    $config = array(
        'private_key_bits' => $length,
        'private_key_type' => OPENSSL_KEYTYPE_RSA
    );
    $pkGenerate = openssl_pkey_new($config);

    // get the private key
    openssl_pkey_export($pkGenerate,$pkGeneratePrivate); // NOTE: second argument is passed by reference

    // get the public key
    $pkGenerateDetails = openssl_pkey_get_details($pkGenerate);
    $pkGeneratePublic = $pkGenerateDetails['key'];

    // free resources
    openssl_pkey_free($pkGenerate);

    // fetch/import public key from PEM formatted string
    // remember $pkGeneratePrivate now is PEM formatted...
    // this is an alternative method from the public retrieval in previous
    $pkImport = openssl_pkey_get_private($pkGeneratePrivate); // import
    $pkImportDetails = openssl_pkey_get_details($pkImport); // same as getting the public key in previous
    $pkImportPublic = $pkImportDetails['key'];
    openssl_pkey_free($pkImport); // clean up
    return array('public'=>$pkGeneratePublic,'private'=>$pkGeneratePrivate);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

之前对rsa加密没什么了解,今天是第一次使用,又遇到这个跨语言的问题。我自己是可以使用生成的密钥进行加密和解密的。
请了解相关问题的人指点一下。

这里有篇文章和我问的问题很相似,但是我对rsa,openssl不太熟悉,所以文章里面说的东西我也看不懂,供能看懂的人参考一下。
http://security.stackexchange.com/questions/15948/how-to-supply-openssl-generated-private-public-keys-to-ios-android-apps

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage