關於PHP的 RSA加密函數openssl_pkey_get_private()/openssl_get_privatekey()返回false問題


文檔描述為:

然而  openssl_pkey_get_private(AppSecret) 這一步將AppSecret傳入返回false,之后在網上找了好久找到一個格式是可以正常返回的,但是在服務器上跑的時候又不返回參數了,而后又大費周折才找到一個都能用的格式!!

前提需要先打開php.ini里的openssl。

將私鑰單獨放在一個文件(private.pem)中(格式千萬不要變,可以復制我的進去先嘗試一下)

private.pem文件:
-----BEGIN RSA PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAL9nq0MHciPvjVgC
Ta2yEUm6enG9zDKLKTJC4HVhP1CYnwbgc29LU8ngxnQmpCizrpKeUsjBwNNmZ/aM
23jEaPYgvh1FrtUblwtjPkZReSmhbsCAvqQYkh7Q6+fgUArmeSHkVBKIWoVGrF3K
fL7T+aUEIUQ88dstAhknXXYqBHLnAgMBAAECgYEAujWTCfzecFOHQM3M4GTSKNZA
dRNe6vUzuPATCl73h+NTIw+NfgLcmxQQPcOyBN75wS5B/4lvnLqN/fB/O/ho2wp8
UzdGbXw0Tk3jc/MiRMfFU6oi6Km/Q0SxWjKngdFq3LHF+f1ue6/0rat6L5ukk/lh
6h0OdcpF3u8kyMGznfECQQDu8uzez7+Hbqc51kfutm0jp8e8tkCwtjZoO5X36hmy
mmbsJLitqToG2NSeuejJdZv+C52pgoBSGJUjNa8IqTLLAkEAzRA4Iv3/hlq7SEq/
bOTl1unyPT2keR3XUgx076zGsbYOXL0ORlyeBkmLJVJBCdD95NLAciOHX13KX8yN
paGQ1QJAcfiGiKP4i8V4l7qgJrj2h4owV89qPZ87hi3dkxki1rCUpM/DEnnkBn4H
tAmigezJ0buCoOZxBDdbcybY7L2fTwJAfS5Ehp/1h8gFgfkXaFtHL237EYV6zPD5
i73M+K7JUJzpoZVLjIpncUEd7zeKOnrZMwGwtzyXHBF+RAL0CUNazQJBAJTaWl3P
4iP53O4EqXFJ1AQV7tqwa/7w48AioY9dCMLv/9kZe9sbB0OKo1O18bRVXgmpuxWI
4pO4mcYESN+7/3w=
-----END RSA PRIVATE KEY-----

php代碼:

<?php

        $appId = xxx;//替換自己的
        $userId = xxx;//替換
        $private_content = file_get_contents(__DIR__.'/private.pem');
        if(!$private_key = openssl_pkey_get_private($private_content)){
              die('error');
        }
        $original_str = 'appId='.$appId.'&userId='.$userId;
        openssl_sign($original_str,$sign,$private_key);
        openssl_free_key($private_key);
        echo $sign=base64_encode($sign);

之前本地有返回而服務器上沒有返回的時候我也想了許多原因 什么php版本啊 甚至連openssl.dll我都重新覆蓋了一遍,最后確定是格式的問題。。怎么說呢 一路的坑真的很多吧。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM