首页 > 后端开发 > php教程 > php openssl生成的rsa密钥给android和ios使用注意哪些问题?

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

WBOY
发布: 2016-06-06 20:38:49
原创
1039 人浏览过

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

1

2

<code>    X509EncodedKeySpec expects DER-encoded data, not PEM-encoded

</code>

登录后复制
登录后复制

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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

登录后复制
登录后复制

之前对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那边使用密钥的时候一直有问题。

1

2

<code>    X509EncodedKeySpec expects DER-encoded data, not PEM-encoded

</code>

登录后复制
登录后复制

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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

登录后复制
登录后复制

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

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

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板