在openssl中对SM2的公私钥进行加解密的验证
在上一篇文章中《通过openssl生成sm2的公私钥的方法》介绍了如何在openssl系统中生成公私钥对,如何对生成的公私钥对进行验证呢?
在ecparam.c中,添加加解密的代码就可以了,还在《通过openssl生成sm2的公私钥的方法》添加公钥的地方,432行,在生成公钥之后,添加代码如下:
i = PEM_write_bio_ECPrivateKey(out, eckey, NULL,NULL, 0, NULL, NULL);//生成私钥//以下为添加代码i = PEM_write_bio_EC_PUBKEY(out, eckey);//生成公钥const char *message = "encryption test data";//测试数据const size_t msg_len = strlen(message);printf("%s\n",message);uint8_t *ctext = NULL;size_t ctext_len = 0;const EVP_MD *digest=EVP_sm3();//摘要方法是sm3sm2_ciphertext_size(eckey, digest, msg_len, &ctext_len);ctext = OPENSSL_zalloc(ctext_len);sm2_encrypt(eckey, digest, (const uint8_t *)message, msg_len,ctext, &ctext_len);//加密printf("%s\n",ctext);//加密后数据uint8_t *recovered = NULL;size_t recovered_len = msg_len;size_t ptext_len = 0;sm2_plaintext_size(eckey, digest, ctext_len, &ptext_len);recovered = OPENSSL_zalloc(ptext_len);sm2_decrypt(eckey, digest, ctext, ctext_len, recovered, &recovered_len);//解密printf("%s\n",recovered);//解密后的数据
然后在ecparam.c中添加sm2的头文件
# include "internal/sm2.h"
在apps下面的build.info中添加crypto的依赖
INCLUDE[openssl]=.. ../include ../crypto/includeDEPEND[openssl]=libapps.a ../libcrypto.a ../libssl
在openssl目录下,make
然后在apps下面执行
./openssl ecparam -name SM2 -genkey
输出如下:
-----BEGIN EC PARAMETERS-----
BgUrgQQAIA==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MGkCAQEEHQDyYYowd8TUhF3XiXX9R0XRsvTkNaVFYcJGR/6CoAcGBSuBBAAgoTwD
OgAEkq2eq2oLsAnQ4n4Rd00Y6ppaj+8oCc5C0x5k4JktJemrBFJdkDoPLJrQWRFa
Mc4FiQ+i33LFE44=
-----END EC PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
ME4wEAYHKoZIzj0CAQYFK4EEACADOgAEkq2eq2oLsAnQ4n4Rd00Y6ppaj+8oCc5C
0x5k4JktJemrBFJdkDoPLJrQWRFaMc4FiQ+i33LFE44=
-----END PUBLIC KEY-----
encryption test data
0uD�mߪ4����~|Fi�o���2�Xں:��
encryption test data
在加密前和加密后的数据均为,encryption test data,完成验证。
在openssl中对SM2的公私钥进行加解密的验证相关推荐
- SM2 生成公钥私钥 签名 加解密 亲测可用
引入pom依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava< ...
- 国产sm2,sm3,sm4加解密
有个为国家做的项目,其中需求是必须要用国产的加密,最后经项目组讨论后决定用国产sm2加密 本人用vue开发前端所以一下实在vue中用的方法, 国密相关介绍 国密算法是国家密码局制定标准的一系列算法,主 ...
- 国产sm2,sm3,sm4加解密兼容ie问题
之前有个文章是写国产sm2,sm3,sm4加解密的,但是在IE浏览器中会出现如下报错: 找问题找了许久终于终于找到了.原因是在sm2,sm3,sm4的加密算法中用到了一个叫jsbn这个依赖.然而这个依 ...
- php RSA公钥私钥加解密和验证用法
现在很多项目中会使用到rsa加解密和验证相关的技术,分别整理代码如下,方便记忆和使用. [签名和验证] 1 //获得签名 2 function getSign($data) { 3 $pem = 'm ...
- openssl gmssl SM2 公私钥生成 加密解密命令
openssl 从 1.1.1 开始支持 sm2.gmssl 基于openssl 添加了对国密的支持. 检测 openssl 是否支持 SM2 openssl ecparam -list_curves ...
- RSA公私钥加密加签顺序
RSA是一种非对称加密的机制,是一对密钥对(公钥和私钥). 一.加密: 1.公钥加密,私钥解密.可以多人持有公钥进行数据加密,仅一人持有私钥进行数据解密: 2.可以确保数据传输的安全性. 二.加签: ...
- RSA生成公私钥并加解密
1.RSA简介 RSA是目前使用最广泛的公钥密码体制之一,可以实现非对称加密.它是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leona ...
- 使用JDK中的安全包对数据进行加解密
本文以使用DES对称加密算法为例使用jdk对数据进行加密解密. 首先需要了解Provider类,它是jdk引入的密码服务提供者概念,实现了Java安全性的一部分或者全部.Provider 可能实现的服 ...
- RSA公私钥格式分析及其在Java和Openssl之间的转换方法
文章目录 PKCS#1和PKCS#8 X.509公钥证书 ASN.1抽象语法标记 DER和PEM编码 OID对象标识符 用openssl命令生成PKCS1#格式的RSA密钥对 生成私钥 从私钥中导出公 ...
最新文章
- SAP 库存相关表格
- WPF中用于嵌入其他进程窗口的自定义控件(AppContainer)
- Mybatis插入数据后获取主键的值
- 3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息
- mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)
- xsync 集群同步脚本介绍(拷贝文件不同的部分)
- 鼠标移开事件(onmouseout)
- android 车牌自动识别,Android端车牌识别可以用来实现摄像头扫描识别车牌?
- 高通9008端口刷linux,高通命令进入9008端口方式汇总
- 【线性代数笔记】矩阵的合同关系
- 离散数学知识点总结(4):合取范式,析取范式
- 石墨烯气凝胶的3D打印-气凝胶(Aerogels)是世界上最轻的材料之一,石墨烯气凝胶(Graphene aerogel)又是该品类中最轻的一种
- 时间类计算:双代号网络图、单代号网络图、时标网络图
- Option3X 5G 全网部署(基于 IUV_5G 软件)
- php微信支付需要哪些设置,如何申请和配置微信支付接口?
- App移动应用测试点总结
- labview运行excel宏_LabVIEW中Excel报告生成功能开发
- PB调用http协议接口(WebAPI)
- 警惕新型钓鱼邮件诈骗~伪装的“再次发送”邮件
- ElementUI 获取el-table表格选中行信息及清除选中行