关于PHP的 RSA加密函数openssl_pkey_get_private()/openssl_get_privatekey()返回false问题

今天同事在对接微猫商城的时候需要用到一个sgin参数

  文档描述为:

 

  然而  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我都重新覆盖了一遍,最后确定是格式的问题。。怎么说呢 一路的坑真的很多吧。。。

转载于:https://www.cnblogs.com/woaidayuan/p/7282474.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值