PHP之 通过ecc,sm2加密证书实现 sm2国密 加密

news2024/11/24 16:49:27

SM2
为非对称加密,基于 ECC。该算法已公开。由于该算法基于 ECC,故其签名速度与秘钥生成速度都快于 RSA。ECC 256 位(SM2 采用的就是 ECC 256 位的一种)安全强度比 RSA 2048 位高,但运算速度快于 RSA。

openssl_pkey_get_public

— 从证书中解析公钥 , php使用这个函数可以获取 rsa的公钥,sm2证书的一直获取不到,切换php版本,有的可以解析,有的不可以

使用openssl 获取证书 公钥一直报错

php中openssl_public_encrypt进行sm2加密,报错openssl_public_encrypt(): key typ
php中用openssl_pkey_get_public获取不到ecc算法的公钥

在这里插入图片描述

php想要进行sm2加密的话,需要使用扩展 例如 GmSSL openssl-ext-sm2

git 地址
https://github.com/GmSSL/GmSSL-PHP
https://github.com/guanzhi/GmSSL/tree/GmSSL-v2
https://gitee.com/state-secret-series/openssl-ext-sm2

参考
https://blog.csdn.net/markximo/article/details/128124885
https://blog.csdn.net/weixin_37644303/article/details/140121305
https://gitcode.csdn.net/65acad86b8e5f01e1e452089.html
https://blog.csdn.net/yifan_lion/article/details/106353657
https://blog.csdn.net/weixin_34392511/article/details/116122485

证书格式
在这里插入图片描述

PEM
DER格式是ASN.1数据的二进制编码,计算机处理方便,但不利于人类处理,比如不方便直接在邮件正文中粘贴发送。PEM是DER格式的BASE64编码。除此之外,PEM在DER的BASE64前后各增加了一行,用来标识数据内容。示例如下:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMYfnvWtC8Id5bPKae5yXSxQTt
+Zpul6AnnZWfI2TtIarvjHBFUtXRo96y7hoL4VWOPKGCsRqMFDkrbeUjRrx8iL91
4/srnyf6sh9c8Zk04xEOpK1ypvBz+Ks4uZObtjnnitf0NBGdjMKxveTq+VE7BWUI
yQjtQ8mbDOsiLLvh7wIDAQAB
-----END PUBLIC KEY-----

X.509
X.509是一项描述公钥证书结构的标准,广泛使用在HTTPS协议中,定义在RFC 3280

X.509使用ASN.1来描述公钥证书的结构,通常编码为DER格式,也可以进一步BASE64编码为可打印的PEM格式。

将crt转换为cer格式

openssl x509 -in /usr/local/openssl/ssl/CA/SecondCA.crt -out /usr/local/openssl/ssl/CA/SecondCA.cer

证书编码的转换

openssl x509 -in cert.crt -outform der -out cert.der               ##PEM转为DER 
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem   ##DER转为PEM 

查看证书方法

openssl x509 -in /usr/local/openssl/ssl/CA/SecondCA.crt -noout -text

1.3 pem和der

参考:PEM 与 DER 格式详解

PEM 与 DER是用于存储、传输密钥和证书的标准格式,两者紧密关联,可以互相转换。

ASN.1 ------(序列化)------ DER ------(Base64编码)------ PEM

对 ASN.1 序列化后,就会生成一个二进制串,这个就是 DER 格式。

将二进制进行 Base64 编码,再加上 PEM 格式特有的头尾两行,就生成了 PEM 格式。

PEM 和 DER 的主要区别在于它们的编码方式

DER: 二进制格式,ASN.1结构的直接编码,更紧凑。后缀通常为 .der 和 .cer。
PEM: 使用 Base64 编码,可读性更好,但文件大小更大。后缀通常为.pem、.cer、.crt、.key

1.3.1 PEM 转 DER

先将 PEM 文件里面首尾的 ----BEGIN xxx---- 和 ----END xxx----两行去掉
再将内容合并为一行(去掉换行符\r\n)
接着将内容进行 Base64 解码得到原始二进制数据。

通过 openssl 命令转换如下:

openssl rsa -in rsa_private.pem -outform DER -out rsa_private.der

1.3.2 DER 转 PEM

先将 DER 二进制内容进行 Base64 编码
再按每行 64 个字节进行切分
最后在切分后的内容前后加上 ----BEGIN xxx----和 ----END xxx----

通过 openssl 命令转换如下:

openssl rsa -inform DER -in rsa_private.der -outform PEM -out rsa_private2.pem

在这里插入图片描述

4.数字证书

4.1 查看证书序列号

openssl x509 -in xx.cer -noout -serial

4.2 获取证书中的公钥(PKCS8)

openssl x509 -in xx.cer -pubkey  -noout > xx.pem

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息学奥赛初赛天天练-72-NOIP2016普及组-基础题3-无向图、简单无向图、自环、平行边、顶点的度、握手定理、递归

NOIP 2016 普及组 基础题3 5 以下不是存储设备的是( ) A 光盘 B 磁盘 C 固态硬盘 D 鼠标 6 如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照 CapsLock、 字母键 A、字母键 S、字母键 D、字母键 F 的顺序循环按键,即 CapsLock、A、S、D、F、…

10秒记住C语言运算优先级

C语言中有10类运算符号:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符 你是否正在为记住C语言运算优先级而烦恼? C语言中每种同类运算符都有内部的运算符优先级&…

iOS18 Beta7 最终测试版推送:苹果的又一次技术飞跃

苹果公司以其一贯的创新精神和对完美的追求,再次引领了科技界的新潮流。今天,我们聚焦于苹果最新推送的iOS18 Beta7最终测试版,这一版本不仅是苹果软件更新的里程碑,更是用户体验的一次重大升级。 最终测试版的亮相 在众多果粉的…

《黑神话.悟空》与人工智能AI重塑经典与探索未来的交织

"近期我偶然邂逅了一个极为出色的人工智能学习平台,它不仅内容深入浅出,讲解方式还风趣幽默,让人学习起来既轻松又高效。如此宝藏资源,我迫不及待想要与各位共享。即刻点击让我们一起进入这个精彩纷呈的学习网站吧&#xff0…

2024年最顶尖的9大企业薪酬绩效管理系统

国内外主流的绩效管理系统软件有:Moka;2. BambooHR;3. 飞书绩效;4. 北森;5. Peoplebox;6. Tita绩效宝;7. 泛微人事管理;8. Trakstar Perform;9. 红海eHR。 在现代企业环境…

养宠人崩溃瞬间——猫毛满天飞,换毛季宠物掉毛该如何清理?

我家猫最近换毛季,每天随便都能用梳子梳下来几个大饼,只要它所到之处猫毛满天飞,根本扫不完。衣柜里的衣服也不能幸免,深色衣服已经被猫毛占据,直接变了一种颜色。想当初它来家里的时候是冬天,我还惊讶这只…

使用Obsidian实现Anki快速制卡

文章目录 前言准备双双启用遇到问题查看是什么问题解决问题 开始使用使用前的一些设置快速制卡 前言 我现在使用 Anki 的同时也使用 Obsidian,正好可以通过插件来让这两个十分好用的软件实现联动。 在 Obsidian 中实现 Anki 的快速制卡。 准备 首先要在这两个软…

Cocos Creator通用关卡编辑器UniLevelEditor

这是一款通用的关卡编辑器,可以帮助你快速制作不同类型游戏的关卡内容。不需要每个游戏都特别制作对应的关卡编辑器了。 注:该商品为Cocos项目源码,不是插件,开发语言为TypeScript。 目前仅支持在Cocos Creator 2.x中运行该项目&a…

Voilà的安装与介绍

‌Voil‌是一个工具,能够将Jupyter Notebooks转换成交互式网页,允许代码单元运行、ipywidgets交互,并且方便分享。Voil的主要功能包括: -‌ 转换notebook‌:Voil可以将Jupyter notebook转换成一个静态的网页,包括代码单元、Markdown单元、输出结果以及交互式组件,同时保…

中国红树林动态分布数据(1990-2020年)

红树林位于热带和亚热带地区的沿海过渡地带,具有重要的生态功能和社会经济价值。同时红树林是热带、亚热带海岸带海陆交错区生产能力最高的海洋生态系统之一,在净化海水、防风消浪、维持生物多样性、固碳储碳等方面发挥着极为重要的作用。 该数据集利用了…

2024年高教社杯数学建模国赛E题思路解析+代码+论文

2024年高教社杯全国大学生数学建模竞赛(以下简称国赛)将于9月5日晚6时正式开始。 下文包含:2024国赛思路解析​、国赛参赛时间及规则信息说明、好用的数模技巧及如何备战数学建模竞赛 C君将会第一时间发布选题建议、所有题目的思路解析、相…

网络通信tcp

管道通信与数据复制管道通信确实涉及数据复制的过程,这是由于管道的工作原理所决定的。下面详细解释一下:管道通信的数据复制 1. 写入管道:•当一个进程通过 write() 系统调用向管道写入数据时,数据实际上是从进程的用户空间复制…

【blender】一个汉堡包

第一次建模,哈哈汉堡包样式大差不差。至于这么做的,那么多快捷键完蛋,忘得差不多了! 官网地址:https://www.blender.org/download/ 我下载的是4.2版本

大众点评2024年6月全国全分类店铺基础信息数据库

大众点评的采集在2023年之前还是比较好采集的,很多接口不需要登录,即使登录一个帐号也可以采集很多,所以大约2023年8月以前的大众点评店铺字段非常丰富,几乎所有常见店铺字段都能采集。 2023年8月以后,大量接口权限变…

Bigtop 从0开始(下)

原文阅读:【巨人肩膀社区博客分享】Bigtop 从0开始 bigtop 使用示例: 这里使用 官方的bigtop 3.2.0 作为示例,使用centos7 为编译操作系统,其他的系统和其他版本也是一样的操作。 1.创建一个开发目录 mkdir /home/jialiang/dev/ 2.克隆b…

监控篇之利用dcgm-exporter监控GPU指标并集成grafana大盘

一、应用场景 当环境中包含GPU节点时,需要了解GPU应用使用节点GPU资源的情况,例如GPU利用率、显存使用量、GPU运行的温度、GPU的功率等。 在获取GPU监控指标后,用户可根据应用的GPU指标配置弹性伸缩策略,或者根据GPU指标设置告警…

【鸿蒙 HarmonyOS NEXT】引入第三方js:dayjs

一、背景 项目中需要呈现日期,如:创建时间、申请时间、订单时间、售后时间等;但接口一般返回的是时间戳,需要将时间戳转换成日期格式,如:2023-10-13 14:28:40,此时便考虑使用第三方js库&#x…

【题解】【搜索】—— [NOIP2002 普及组] 选数

【题解】【搜索】—— [NOIP2002 普及组] 选数 [NOIP2002 普及组] 选数题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 解法1.子集枚举1.1.题意解析1.2.AC代码 解法2.深度优先搜索2.1.题意解析2.2.AC代码 [NOIP2002 普及组] 选数 戳我查看题目(洛谷&…

NADAR: Neural Architecture Dilation for Adversarial Robustness

NADAR: 对抗鲁棒性的网络架构扩展 论文链接:https://arxiv.org/abs/2108.06885 Abstract 在过去的几十年里,卷积神经网络(CNN)在架构和规模上取得了巨大的进步,在某些任务中,它们可以很容易地达到甚至超过人类的表现。然而&…

【Unity】通用GM QA工具 运行时数值修改 命令行 测试工具

GM工具使用: GM工具通常用于游戏运行时修改数值(加钱/血量)、解锁关卡等,用于快速无死角测试游戏。一个通用型GM工具对于游戏项目是非常实用且必要的,但通用不能向易用妥协,纯命令行GM门槛太高,对QA不友好。 这类运行时命令行工具…