热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpopenssl_get_privatekey提示未定义,php中openssl_pkey_get_private()函数遇到false的问题解决办法...

今天用openssl_pkey_get_private()函数遇到了一个大坑:如果你的私钥文件(private_key.pem)是-----BEGINPRIVATEK

今天用openssl_pkey_get_private()函数遇到了一个大坑:

如果你的私钥文件(private_key.pem)是

-----BEGIN PRIVATE KEY-----字符串字符串-----END PRIVATE KEY-----

要是私钥文件的字符串全部写在一行 此函数就会返回false,我的php版本是5.6版本的

正常使用两种办法

1.$privateKey = openssl_pkey_get_private($privateKey);

2.$privateKey = openssl_pkey_get_private(file_get_contents($privateKey));

尤其第二种很容易遇到问题而导致返回false. 原因不明.

解决方案:只需要把文件中的字符串换行就好,如下所示

-----BEGIN PRIVATE KEY-----

字符串字符串

字符串字符串

-----END PRIVATE KEY-----

以下两段代码.不同环境下都能用.有时候返回false换另一种试试

代码一

$pem = "-----BEGIN RSA PRIVATE KEY-----\n" .$content."\n-----END RSA PRIVATE KEY-----";

$pkeyid = openssl_pkey_get_private($pem);

openssl_sign($data,$sign,$pkeyid,OPENSSL_ALGO_MD5);

$t=base64_encode($sign);

代码二(特别注意换行)

$content=chunk_split($content, 64, "\n");

$pem = "-----BEGIN RSA PRIVATE KEY-----\n" .$content."-----END RSA PRIVATE KEY-----";

$pkeyid = openssl_pkey_get_private($pem);

openssl_sign($data,$sign,$pkeyid,OPENSSL_ALGO_MD5);

$t=base64_encode($sign);

文章来源: www.oschina.net,作者:xiaogg,版权归原作者所有,如需转载,请联系作者。

原文链接:https://my.oschina.net/xiaogg/blog/3154557



推荐阅读
  • PHP中元素的计量单位是什么? ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 通过使用 `pandas` 库中的 `scatter_matrix` 函数,可以有效地绘制出多个特征之间的两两关系。该函数不仅能够生成散点图矩阵,还能通过参数如 `frame`、`alpha`、`c`、`figsize` 和 `ax` 等进行自定义设置,以满足不同的可视化需求。此外,`diagonal` 参数允许用户选择对角线上的图表类型,例如直方图或密度图,从而提供更多的数据洞察。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文介绍了一种利用PHP cURL库高效提取Sohu邮箱联系人列表的方法。通过设置错误报告级别、定义Cookie文件路径等关键步骤,确保了代码的稳定性和可靠性。经过实际测试,该方法在2012年3月24日被验证为有效,能够快速准确地获取联系人信息。此外,文章还提供了详细的代码示例和注意事项,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • HTML5大文件传输技术深度解析与实践分享
    本文深入探讨了HTML5在Web前端开发中实现大文件上传的技术细节与实践方法。通过实例分析,详细讲解了如何利用HTML5的相关特性高效、稳定地处理大文件传输问题,并提供了可供参考的代码示例和解决方案。此外,文章还讨论了常见的技术挑战及优化策略,旨在帮助开发者更好地理解和应用HTML5大文件上传技术。 ... [详细]
author-avatar
端庄的张佳迎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有