pxrty_635 发布于 2017-05-12 09:13

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

    X509EncodedKeySpec expects DER-encoded data, not PEM-encoded

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

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

    // 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);

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

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

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
活跃用户
  • 1
    问道摩托
  • 2
    袁广龙976丶
  • 3
    逍遥子
  • 4
    亮仔
  • 5
    芙蓉花
  • 6
    作小die_syj
  • 7
    王丽珠景平怡伦_621
  • 8
    adfa3sd5f6a
  • 9
    欣欣大妮
  • 10
    sfasfs
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有