openssl进行RSA加解密(C++)
2024-09-19 08:00:05
- 密钥对
根据RSA的加密机制(自行查找RSA工作原理),通常可以私钥加密-公钥解密(多用于签名),公钥加密-私钥解密(多用于数据传输加密),私钥可以生成公钥。 - 密钥对生成
生成私钥,长度为2048,默认格式为PKCS1,即,头部和尾部有RSA字样openssl genrsa -out rsa_private_key.pem 2048
生成对应公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key_2048.pem
公钥格式通常不表,我查看了很多资料都不说这个,但是可以发现这样生成的公钥头部没有RSA,所以应该为PKCS8格式
- 密钥转换,PKCS1 -> PKCS8
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform pem -nocrypt -out private_pkcs8.pem
查了一些资料一般也只是转换私钥的格式。
- C++
rsa加密的public key格式有多种,常见的有两种,一种密钥头为‘-----BEGIN RSA PUBLIC KEY-----’,一种开头为‘-----BEGIN PUBLIC KEY-----’,二者分别对应rsa的PKCS#1和PKCS#8格式。
使用openssl库加载rsa的公钥时,使用的函数也不同。以字符串公钥为例,对PKCS#1格式的密钥加载使用PEM_read_bio_RSAPublicKey()函数,对PKCS#8格式公钥的加载使用PEM_read_bio_RSA_PUBKEY()函数。---摘抄自下面第二个链接,这个说出了关键点。公钥要区分格式读取,私钥不用。
参考: https://www.jianshu.com/p/f18304b1b513
https://blog.csdn.net/freesonWANG/article/details/87717361
最新文章
- Java进击C#——开发环境
- css框架
- c#比较两个List相等
- 【面试必备】CSS盒模型的点点滴滴
- c++20701除法(刘汝佳1、2册第七章,暴搜解决)
- mouseover和mouseout闪烁问题
- JS事件分析
- 强连通+二分匹配(hdu4685 Prince and Princess)
- 菜鸟学习Hibernate——持久层框架
- MySQL 知识点
- Foundation Data Structure
- PHP学习之数据库操作
- ajaxterm不好还是gateone好
- [Windows Phone] 以多国语言做为开发前提 (2)
- Learning ROS for Robotics Programming Second Edition学习笔记(九) indigo Gazebo rviz slam navigation
- python3 load Iris.data数据集出现报错key words: b'Iris-setosa'
- maven项目发布到tomcat的错误
- Ado.net之存储过程的使用【三】
- Java编程的逻辑 (11) - 初识函数
- Eclipse QuickSear的插件的说明