PHP RSA 报错
openssl_sign(): supplied key param cannot be coerced into a private key
原因:
RSA 的秘钥一般都有固定换行格式,是不是这种情况导致的呢
按照此格式试试,问题竟然顺利解决

私钥

$str='你的私钥(改成一行)';
$str        = chunk_split($str, 64, "\n");$key = "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n";$signature = '';if (openssl_sign($data, $signature, $key, OPENSSL_ALGO_MD5)) {echo base64_encode($signature);}

公钥

$data='内容';
$str='你的公钥(改成一行)';
$str               = chunk_split($str, 64, "\n");$key = "-----BEGIN PUBLIC KEY-----\n$str-----END PUBLIC KEY-----\n";$signature = "";if (openssl_verify(base64_decode($data), $signature, $key, OPENSSL_ALGO_MD5) == 1) {echo $signature;}

案例:
http://php.net/manual/en/function.openssl-sign.php 官方案例 改造了一下
官方的公钥私钥格式太标准,所以要改造一下。
因为我们拿到的公钥私钥有可能就是一行的

$data = "Beeeeer is really good.. hic...";
$private_key = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBANDiE2+Xi/WnO+s120NiiJhNyIButVu6zxqlVzz0wy2j4kQVUC4Z
RZD80IY+4wIiX2YxKBZKGnd2TtPkcJ/ljkUCAwEAAQJAL151ZeMKHEU2c1qdRKS9
sTxCcc2pVwoAGVzRccNX16tfmCf8FjxuM3WmLdsPxYoHrwb1LFNxiNk1MXrxjH3R
6QIhAPB7edmcjH4bhMaJBztcbNE1VRCEi/bisAwiPPMq9/2nAiEA3lyc5+f6DEIJ
h1y6BWkdVULDSM+jpi1XiV/DevxuijMCIQCAEPGqHsF+4v7Jj+3HAgh9PU6otj2n
Y79nJtCYmvhoHwIgNDePaS4inApN7omp7WdXyhPZhBmulnGDYvEoGJN66d0CIHra
I2SvDkQ5CmrzkW5qPaE2oO7BSqAhRZxiYpZFb5CI
-----END RSA PRIVATE KEY-----
EOD;
$public_key = <<<EOD
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANDiE2+Xi/WnO+s120NiiJhNyIButVu6
zxqlVzz0wy2j4kQVUC4ZRZD80IY+4wIiX2YxKBZKGnd2TtPkcJ/ljkUCAwEAAQ==
-----END PUBLIC KEY-----
EOD;/
//上面是官方的  改造一下
///
//例如我们拿到的公钥私钥是一行的
//私钥
$str='MIIBOgIBAAJBANDiE2+Xi/WnO+s120NiiJhNyIButVu6zxqlVzz0wy2j4kQVUC4ZRZD80IY+4wIiX2YxKBZKGnd2TtPkcJ/ljkUCAwEAAQJAL151ZeMKHEU2c1qdRKS9sTxCcc2pVwoAGVzRccNX16tfmCf8FjxuM3WmLdsPxYoHrwb1LFNxiNk1MXrxjH3R6QIhAPB7edmcjH4bhMaJBztcbNE1VRCEi/bisAwiPPMq9/2nAiEA3lyc5+f6DEIJh1y6BWkdVULDSM+jpi1XiV/DevxuijMCIQCAEPGqHsF+4v7Jj+3HAgh9PU6otj2nY79nJtCYmvhoHwIgNDePaS4inApN7omp7WdXyhPZhBmulnGDYvEoGJN66d0CIHraI2SvDkQ5CmrzkW5qPaE2oO7BSqAhRZxiYpZFb5CI';
$str        = chunk_split($str, 64, "\n");
$private_key = "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n";//公钥
$str='MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANDiE2+Xi/WnO+s120NiiJhNyIButVu6zxqlVzz0wy2j4kQVUC4ZRZD80IY+4wIiX2YxKBZKGnd2TtPkcJ/ljkUCAwEAAQ==';
$str               = chunk_split($str, 64, "\n");$public_key = "-----BEGIN PUBLIC KEY-----\n$str-----END PUBLIC KEY-----\n";$binary_signature = "";openssl_sign($data, $binary_signature, $private_key, OPENSSL_ALGO_SHA1);// Check signature
$ok = openssl_verify($data, $binary_signature, $public_key, OPENSSL_ALGO_SHA1);
echo "check #1: ";
if ($ok == 1) {echo "signature ok (as it should be)\n";
} elseif ($ok == 0) {echo "bad (there's something wrong)\n";
} else {echo "ugly, error checking signature\n";
}$ok = openssl_verify('tampered'.$data, $binary_signature, $public_key, OPENSSL_ALGO_SHA1);
echo "check #2: ";
if ($ok == 1) {echo "ERROR: Data has been tampered, but signature is still valid! Argh!\n";
} elseif ($ok == 0) {echo "bad signature (as it should be, since data has beent tampered)\n";
} else {echo "ugly, error checking signature\n";
}

PHP RSA 报错 openssl_sign(): supplied key param cannot be coerced into a private key相关推荐

  1. php openssl_sign报错,openssl_sign(): supplied key param cannot be coerced into a private key

    $data = "Beeeeer is really good.. hic..."; $private_key = << $public_key = << ...

  2. 关于mysql数据库的外键插入报错:Cannot add or update a child row: a foreign key constraint fails,完整性问题

    关于mysql的外键插入报错:Cannot add or update a child row: a foreign key constraint fails..... 首先确定sql语句的正确 然后 ...

  3. 报错Failed to decode param

    vue 项目启动报错Failed to decode param '/%3C%  后面还有很多. 解决:缺少包.npm install 就好了 . 以后遇上这些无厘头的问题先重启项目 ,不好用再ins ...

  4. Angular(build打包)报错:supplied parameters do not match any signature of call target

    在写Angular时,npm run build 报错了:supplied parameters do not match any signature of call target. 然后去搜索了一下 ...

  5. BaiduMapsApiDemo报错:请在 DemoApplication.java文件输入正确的授权Key

    BaiduMaps的程序猿真是恶心,弄个BaiduMapsApiDemo,下载下来了还报错,让人申请授权Key: 请在 DemoApplication.java文件输入正确的授权Key!申请地址:ht ...

  6. 在ubuntu中运行sudo apt-get update报错The following signatures couldn‘t be verified because the public key

    出现的问题如下图: 报错信息: Err:5 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64  InR ...

  7. 4 Flask开发进阶:记下一次级联删除的报错:Cannot delete or update a parent row: a foreign key constraint fails

    中间表 class Permission(object):LOGIN = 0x01EDITOR = 0x02OPERATOR = 0x04ADMINISTER = 0xffPERMISSION_MAP ...

  8. vuerouter4报错:Discarded invalid param(s) “name“, “age“ when navigating.

    bug描述: 从A页面跳转到B页面,在将A页面的某些参数以[路由组件参数]的方式准备携带到B页面,由于希望该参数不出现在地址栏中,所以用了params而不是query,然后报了这个错. router. ...

  9. 升级jdk后 Android studio报错,Supplied javaHome must be a valid directory. You supplied: 。。。。

    工程中也没有设定jdk目录,实际原因是gradle的缓存引起的,把下面两个地方的清空一下 ~/.gradle ( windows系统位于 C:\Users\username\.gradle) proj ...

  10. 解决Cannot delete or update a parent row: a foreign key constraint fails的mysql报错

    1 问题 删除有外键关联的数据或者表的时候,mysql出现报错: Cannot delete or update a parent row: a foreign key constraint fail ...

最新文章

  1. H5Stream播放RTSP流视频
  2. PEP8 Python 编码规范整理
  3. javascript 窗口加载事件相关问题
  4. python3.8怎么打开创建_Python3.8有哪些新功能 怎么入行Python开发
  5. 工作中非常逆天的shell命令
  6. VHDL简易电子琴的设计
  7. 刚认识女孩说不要浪费时间_不要浪费时间寻找学习数据科学的最佳方法
  8. Java常见Jar包的用途
  9. mypow等于1什么意思c语言,C语言基础练习题总结
  10. hdu 2141 Can you find it(二分)
  11. 吴恩达神经网络和深度学习-学习笔记-24-在不同的划分上进行训练和测试+不匹配数据划分的偏差和方差
  12. html表单提交带后台,form表单提交数据给后台
  13. 打印机服务器没有响应是怎么回事啊,打印机后台程序没有运行?(打印机后台服务无法启动怎么办?)...
  14. 设计用什么笔记本好?三大选择要点
  15. 树莓派系统搭建在PC虚拟机中
  16. android adb 屏幕分辨率,利用 adb 来修改 Android 安卓的分辨率(另类安卓省电方法)...
  17. Gopher Daily (2020.05.02) ʕ◔ϖ◔ʔ
  18. open /run/flannel/subnet.env: no such file or directory
  19. 【秋招面经】金山前端题目总结
  20. linux platform 设备驱动

热门文章

  1. AVS2音视频编码标准
  2. ubuntu 20.04gitlab-runner docker方式安装使用
  3. Markdown基础语法详细版
  4. 微信开放平台扫码登录
  5. 网站建设教程:企业怎么自己建网站?
  6. 删除页码和从第三页开始有页码
  7. 南大计算机系统基础实验PA0笔记
  8. redis通过key模糊搜索_Redis中关于Key的模糊查找
  9. matlab 平方根法解方程组,matlab改进平方根法
  10. 人工智能助力网络金融反欺诈,声纹识别受追捧