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

zemax光线光扇图 通过入瞳某一坐标(PX,PY)的光线在像面上有唯一的位置(EX,EY),以EX,EY为纵坐标,以PX,PY为横坐标,分别建立坐标系,把通过入瞳的光线都在坐标系里描点就得到了光扇图。对于视场内任意一点,取其子午面内的光线,以光线在光阑面上的透射点坐标为横坐标,同时以该光线在像面上的坐标为纵坐标,描出所有点,构成的图形即为子午面光扇图。在焦点位置,曲线的斜率为0,也就是说,不管入射时的横坐标(光阑面上的位置)是多少,离轴多远,都将汇聚在焦点处。此时,子午面和弧矢面有不同的分布,两条曲线不重合。 阅读详情
AI摘要

本文介绍了PHP中使用RSA进行数据签名与验证的过程,并解决了openssl_sign函数遇到的私钥格式问题。通过调整密钥格式,确保了签名和验证流程的正确实现。

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";
}
Python 爬虫实战:爬取哔哩哔哩知识区,抓取高赞课程信息 哔哩哔哩(Bilibili)是一个广受欢迎的综合性视频社区,其中的知识区汇聚了大量优质的教育、科普、技术等课程内容。本文将指导读者如何使用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息,并进行数据分析。本文深入探究了利用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息的全流程。从前期的环境搭建、模拟登录,到核心的课程数据抓取、存储,再到后续的数据分析与可视化,都详细展开讲解并提供代码支持。通过此方法所获取的数据,能够助力创作者优化内容、用户发现优质课程、平台洞察用户需求。 阅读详情

相关推荐

Matlab实战:12种优化算法在CEC2014测试集上的性能对比(附完整代码)

本文详细对比了12种优化算法在CEC2014测试集上的性能表现,包括PSO、DE、GA等主流算法。通过Matlab实现完整的实验流程,涵盖算法实现、参数设置、结果分析与可视化,为工程优化问题提供实用解决方案。特别关注收敛曲线和评价指标,帮助读者选择最适合特定场景的优化算法。

wine的专栏 681

openssl_sign(): supplied key param cannot be coerced into a private key

PHP RSA 报错 openssl_sign(): supplied key param cannot be coerced into a private key 一般是私钥格式不正确,转换一下就好了。 主要函数: chunk_split(); "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n";...

xiangweiqiang的博客 2万+

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A:期末考试题目描述题目讲解代码B:月份题目描述题目讲解代码C:打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F:挖金子题目描述题目讲解代码G : 金金的游戏题目描述题目讲解代码H : 区间和题目描述题目讲解代码详细视频讲解请关注华北理工大学b站账号。 华北理工大学以升实验班蓝桥杯选拔赛题解 A:期末考试 题目描述 Description 期末考试过去许多天了,如今成绩都出来了,那么现在让我们对成绩我分个类

Qq1739206233的博客 1128

【PHP】openssl_sign(): supplied key param cannot be coerced into a private key

错误原因 有时候在本地使用RSA秘钥没有问题,在服务器上面会报错。这种情况可能是 RSA 的秘钥格式问题导致 解决办法 使用到的函数 wordwrap 定义和用法 wordwrap() 函数按照指定长度对字符串进行折行处理。 注释:该函数可能会在行的开头留下空格。 // 私钥 $privateKey = &quot;-----BEGIN RSA PRIVATE KEY-----\n&quot; . wordwra...

烟雨弥漫了江南的博客 1万+

嵌入式存储入门:Emmc控制器与设备工作原理全解析(附Synopsys/Arasan架构图)

本文深入解析了嵌入式系统中Emmc控制器与设备的工作原理,重点剖析了其作为CPU与存储设备桥梁的核心架构。通过对比Synopsys和Arasan两家主流IP厂商的控制器设计,详细阐述了DMA引擎与FIFO缓冲模块如何协同工作以提升数据传输效率,并提供了从硬件PCB布局到驱动调试的实战指南,帮助硬件工程师与开发者优化系统性能。

weixin_29248653的博客 147

思科网络进阶——多生成树协议(MSTP)配置的一课一得

三、实验拓扑1)设计一个网络架构,要有核心层和接入层,都使用思科交换机。2)企业有4个部门,要求这四个部门都可以上网,但分属不同的VLAN中,这样今后可以做其它安全策略以确保网络安全,这些策略如今后学到的访问控制列表ACL。3)网络架构的设计要具有冗余,防止一条线路或一台设备终端导致的业务中断。4)由于硬件冗余而产生的环路要处理好,也就是要在逻辑上(或者说通过配置)防止物理环路的产生。5)不能因为防止物理环路而导致某端口没有流量,这样浪费端口资源及设备间互联的带宽资源。

zhu52010的博客 3398

支付宝支付出现 openssl_sign(): supplied key param cannot be coerced into a private key

我因为使用了file_put_content 会出现这个错误 直接使用将私钥复制出来了 把头尾去掉 修改为一行字符串传进去就行了 转载于:https://www.cnblogs.com/ikai/p/9639298.html...

weixin_34331102的博客 3962

Codesys 3.5报警功能配置保姆级教程:从变量定义到确认方式(含REF/ACK详解)

本文详细介绍了Codesys 3.5报警功能的配置流程,从变量定义到确认方式的选择,特别解析了REF和ACK两种确认方式的底层逻辑。通过实战案例和代码示例,帮助工程师快速掌握报警系统的搭建与调试技巧,提升工业自动化项目的可靠性。

weixin_29245767的博客 458

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 = <<///////////////////////////////////////////////////////////////////上面是官方的 改造一下/////例如我们拿到的公钥私钥是一行的//私钥$str='MIIBO...

weixin_29502483的博客 2295

6、掌握 CorelDRAW:从基础操作到创意绘图

本文详细介绍了CorelDRAW的基础操作与创意绘图技巧,涵盖软件使用注意事项、常用快捷键、全局与局部设置的区别、Dockers面板的高效使用,并通过绘制带星星图案的球实例,逐步演示了对象创建、编辑、复制、分布优化、元素添加、颜色与特效调整等核心功能,最后讲解了作品的保存与输出方法,帮助用户从入门到进阶掌握CorelDRAW的设计流程。

snow3的博客 122

【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解

本文进行布线铺铜实战及详解布线铺铜的细节

嵌入式阿齐Archie 4万+

PHP对接支付宝电脑网站支付:从沙箱到正式环境全流程指南

支付接口开发常让后端工程师感到棘手,尤其是涉及签名算法、密钥配置与回调验签等环节。在电商与SaaS系统中,电脑网站支付是最基础也最高频的支付场景,其核心流程可概括为:商户系统构造订单并完成RSA2签名,跳转至支付宝收银台,用户付款后由支付宝通过异步通知同步支付结果。理解同步与异步通知的本质区别,掌握公钥私钥对与沙箱环境的使用方法,是高效联调的关键。本文以PHP技术栈为例,完整演示支付宝SDK接入、沙箱环境配置、支付发起与异步通知处理,并提供密钥配置、内网穿透、常见报错排查等实战经验,帮助开发者从零跑通电脑网

weixin_34342992的博客 277

180.在 Vue3 中使用 OpenLayers 实现多个多边形的绘制、编辑、删除与清空

【摘要】本文介绍如何在Vue3+TypeScript环境下使用OpenLayers实现多边形地图交互功能。通过Composition API封装核心逻辑,实现了多边形绘制、编辑、删除及清空等操作。关键技术包括:使用VectorLayer管理图形数据,Draw/Modify/Select交互控制,以及通过ref()管理交互状态。文中提供了完整代码示例,并解决了交互对象叠加问题,为开发GIS应用提供了基础模块。该方案支持扩展为数据库存储、后端交互等高级功能。

小彭的博客 770

ThinkPHP5支付宝OAuth2.0手写签名实战指南

OAuth2.0是一种广泛使用的开放授权协议,其核心原理是通过授权码(code)换取访问令牌(access_token),再凭token获取用户信息,实现第三方系统安全接入。该机制具备高安全性、松耦合与跨平台等技术价值,广泛应用于校园一卡通绑定、企业实名认证、社交类C端应用等场景。在ThinkPHP5生态中,由于官方扩展包缺失OAuth支持,且主流SDK存在签名逻辑错误、响应解析异常与错误码模糊等问题,开发者常需绕过封装陷阱,基于RSA2签名算法、严格参数校验与字符编码处理,手写适配支付宝开放平台的`ali

weixin_33835103的博客 267

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2021-02-24

PHP 在做RSA签名的时候出现openssl sign(): supplied key param cannot be coerced into a private key这个问题 PHP RSA 报错 openssl_sign(): supplied key param cannot be coerced into a private key 原因: 本地测试正常,服务器报错 使用测试数据和测试秘钥,本地和服务器都正常 吧这段代码 private function setupPrivKey()

qq_35652070的博客 1143

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

开发支付宝接口时的错误报告:openssl_sign(): supplied key param cannot be coerced into a private key【解决方法】

首先:肯定是你填的不对! 先下载: 下载完,生成可一串字符串,上传到 接着把后面的“查看支付宝公钥”的字符串,赋值给   ali_public_key。 然后打开生成密钥的那个工具。 会发现生成了这文件。打开后。复制中间的内容到“private_key”。重要!!!!把一串字符串,弄成一行!! -----BEGIN RSA PRIVATE KEY----- 填写中间这一段内...

小馒头丶 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

调用百度支付时报错

openssl_sign(): supplied key param cannot be coerced into a private key BaiDu支付的报错 一般是private_key的格式上传有误 下面这种是正确的格式 下面这种是错误的

Timor 662

支付私钥签名和回调公钥验签

一般设计安全性比较高的三方支付 会采用公私钥这种方式进行加密和解密 话不多说 先说下常见问题 问题1 openssl_sign(): supplied key param cannot be coerced into a private key出现这种问题是私匙的文件格式不对 可以通道下列方法更正 $value是私钥 public function setPrivateKey($valu...

rootzcl的博客 1058

laravel 5.x 支付宝 异步通知签名验证失败 openssl_verify()错误

使用支付宝服务端PHP sdk,经常会遇到各种奇葩问题,这里记录了一些。 1.错误 openssl_verify(): supplied key param cannot be coerced into a public key 解决这个错误主要是确认 AopClient的参数 alipayrsaPublicKey 传入了参数 且是支付宝的公钥而不是商户公钥。 if($this->

daleyshek的博客 1万+

openssl_verify(): supplied key param cannot be coerced into a public key错误解决的一种办法

openssl_verify(): supplied key param cannot be coerced into a public key 在接入支付宝网站支付的时候,处理异步回调报了这个错误。从错误来看,应该是公钥错了。可是查了半天怎么查也查不出来。具体情况如下: 知道我看到了key末尾的那个换行… 不知道啥时候复制上去一个换行… 仅仅做一个记录和参考吧… ...

书山路遥 1万+

openssl兼容php,php的openssl扩展版本兼容问题

因为服务器里在跑一些老项目兼容问题很多,一直运行PHP7.0版本没有升级。在对接微信分时需要使用到AES-256-GCM加密需要调整PHP环境,决定先升级到PHP7.2,升级后发现openssl_sign()报错,排查后做下简单兼容调整说明。做三方对接时时常会出现问题,尤其是运行环境发生变化时。对于PHP环境主要分为:php版本、扩展库版本。如果出现兼容性问题则首先需要确认环境问题,避免走弯路。o...

weixin_32050773的博客 707
上一篇: 以太坊主网节点搭建
下一篇: 网站添加https后websocket不能使用
梦夏夜
博客等级 码龄10年 531粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值