1. 程式人生 > >支付寶 報錯 rsa_private read error : private key is NULL解決方法

支付寶 報錯 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轉換。