RSA2048
小编最近裸辞了,以前工作中涉及到的RSA加密使用方法一直没有总结。
所以把RSA2048的密钥生成和使用方法写一写免得以后忘记(而且网上好多碎片化信息没有总结成一套)。
我选择的开源代码是包含了除N,P,Q,E,D之外还需要E1,E2,C的处理方式。其实大差不差,因为按照我的理解E1,E2和C也是从前几个参数搞出来(大家有不同想法请及时告知以免我误导大家)。
我是使用C代码进行加密和解密的。
本教程中还需要额外安装openssl哦。
RSA参数简述
RSA最主要的三个参数:N(公开密钥1),E(公开密钥2),D(私钥)
取两个大素数P和Q,所以就有了N:N=P*Q。
随机取密钥E(常用3个值:3,17,65537)。
D私钥:D=E^-1mod(P-1)(Q-1)。
有以上参数后即可加解密
设A为明文,B为密文,则:
A=B^d mod n;
B=A^e mod n;
参见文章:大神的RSA详解
大家有意的可以研究去,小编最近狂的很就不去研究啦。
RSA生成
首先需要安装一下openssl
1.OPENSSL下载地址
安装方法可以点击此处(另一位大神的文章)
然后最重要的来啦!
建立一个文件夹用来生成密钥对
在文件夹中新建 xxx.txt 文件随便你叫他什么。
往其中写入如下参数
openssl genrsa -out private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem
openssl rsa -pubin -in public_key.pem -RSAPublicKey_out -out pkcs1_public_key.pem
openssl rsa -in private_key.pem -text -out private.txt
保存退出,然后将 xxx.txt 后缀改为 xxx.bat 双击将其运行,你就会得到密钥对喽。
使用C代码加解密
本次使用的开源代码RSA2048-master
网上就能查到资源,按道理在github上有很多人上传的
https://github.com/terrantsh/RSA2048.git
将key.h中的参数替换成你生成的就可以。
rsa_private_encrypt(output, &outputLen, input, inputLen, &sk);中的output就是输出的加密信息。