zoukankan      html  css  js  c++  java
  • 支付宝 报错 rsa_private read error : private key is NULL解决方法

    原因: 

    真机调试IOS支付宝功能GDB出现 rsa_private read error : private key is NULL提示

    调试iOS 支付宝SDK的时候,运行demo,把
    Partner(合作商户 ID)
    Seller(账户 ID)
    RSA public key(支付宝公钥)
    RSA private key(商户私钥)

    都放到plist文件了,运行的时候,报错 rsa_private read error : private key isNULL

    我确定的是RSA private key肯定是有的,调试了下

        bio_private= BIO_new(BIO_s_file());
        BIO_read_filename(bio_private,private_key_file_path);
        rsa_private= PEM_read_bio_RSAPrivateKey(bio_private, NULL, NULL,"");    
        if(rsa_private != nil) {
    这里,rsa_private 返回空, private_key_file_path 这些值都是有的

    解决方法: 

    将私钥转成PKCS8替换一下原私钥即可

    1、生成私钥pem,  执行命令openssl genrsa -out rsa_private_key.pem 1024
    2、生成公钥,执行命令openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
    3、将RSA私钥转换成PKCS8格式,命令执行openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt PHP服务端语言读取私钥不需要PKCS8转换。
     
     
    开始两行命令会生成两个key的文件,但是是rsa加密的
    需要调用第三个命令生成pkcs8格式的私钥。但是这个并不会自动保存,需要手动保存。
    官方文档有说:

    4. 生成PKCS8 编码的私钥

    输入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回车,当前界面中会直接显示出生成结果: 

    右键点击 openssl 窗口上边边缘,选择“编辑→标记”,选中要复制的文字: (就是中间那一块,包括---BEGIN PRIVATE KEY---和---END PRIVATE KEY---)

    此时继续右键点击 openssl 窗口上边边缘,选择“编辑→复制”,把复制的内容粘 贴进一个新的记事本中,可随意命名,只要知道这个是 PKCS8 格式的私钥即可(请 妥善保存该文件)。 

  • 相关阅读:
    广商14级软件工程团队第一次冲刺相关问题
    Github团队开发示例(二)
    广商14级软件工程团队作业分数
    Github团队开发示例(一)
    《Head First 设计模式》之装饰者模式
    《Head First 设计模式》之观察者模式
    《Head First 设计模式》之策略模式
    AD域登录验证
    广商14级软件工程:助教总结
    广商14级软件工程分数:第十四回合
  • 原文地址:https://www.cnblogs.com/endtel/p/4815591.html
Copyright © 2011-2022 走看看