作为程序员一定要保持良好的睡眠,才能好编程

RSA公钥与钥匙生成方式

发布时间:2018-07-18



在项目中,经常会使用到数据加密,今天就来看看RSA的 公钥和私钥是如何生成的。


公钥和私钥 是通过 openssl  生成的。


在windows下,可以使用 apache 中的 openssl 进行生成 。


这里有一个网址可以动态生成rsa的公钥和私钥:

http://web.chacuo.net/netrsakeypair



linux下直接在命令行下,执行 openssl ,如果不存在,使用 yum install -y openssl genrsa  rsa

 同时安装这三个命令,待安装成功后:


 好的,具体看一下是如何操作的:


opensslprivate.png



opensslpublic.png


记住:公钥是根据私钥生成的,根据私钥可以计算出公钥


http://tool.chacuo.net/cryptgetpubkey

看结果

rssa.png

嗯,就是这样






使用 ctrl+c 保存退出

查看一下本地是否有两个文件

rsa_private_key.pem  私钥

rsa_public_key.pem   公钥



分别看看这里面都是什么信息:

rsa_public_key.pem

-----BEGIN PUBLIC KEY-----
MIIBHDANBgkqhkiG9w0BAQEFAAOCAQkAMIIBBAKB/DOkimK73S9bO46Om1FIoucf
qX5klB6+C5mEh2qL+ddOWCFvUeiODk8EN3giTyPLyYXPnNtYGRscIgcyyyQ/Vob0
Y4VYAZM9FCbQfupLj0lgkQD4QZxqHai0Zp4Z7iHApB+TXMUA+mi1xDPmJMesO+w4
AO8DJb9wuv1GsrnEKp28bn9Wj9021bujJOcbevVkGaAKajfpt5IiJYZ/BmQh6eG9
eVydYWncHbM0D1QCPx6Sa02MKKTA7Y7mzAuxAVtGRW/lZKXUPrpui3ibOzCCDB0G
96WJLZqh5/oEbuTzd0MQ9fkso1AaNRZ82S+xOZ/12V5s5+eJZdrHVzJmgQIDAQAB
-----END PUBLIC KEY-----


rsa_private_key.pem

-----BEGIN RSA PRIVATE KEY-----
MIIEhgIBAAKB/DOkimK73S9bO46Om1FIoucfqX5klB6+C5mEh2qL+ddOWCFvUeiO
Dk8EN3giTyPLyYXPnNtYGRscIgcyyyQ/Vob0Y4VYAZM9FCbQfupLj0lgkQD4QZxq
Hai0Zp4Z7iHApB+TXMUA+mi1xDPmJMesO+w4AO8DJb9wuv1GsrnEKp28bn9Wj902
1bujJOcbevVkGaAKajfpt5IiJYZ/BmQh6eG9eVydYWncHbM0D1QCPx6Sa02MKKTA
7Y7mzAuxAVtGRW/lZKXUPrpui3ibOzCCDB0G96WJLZqh5/oEbuTzd0MQ9fkso1Aa
NRZ82S+xOZ/12V5s5+eJZdrHVzJmgQIDAQABAoH8MN+slAplJrc54w11UnTirsdZ
OiPnxjxnb+9r1NsKJMihQWs/4k3mnsNH16roqODpJHk6Yp+6itySG6vncrN6qRfK
w9xpCTaJxr4VDplZzsDUGk3YkjYfQZURdNjndAwDh1qINm1ZjxVOzSsmbc3DnCfY
QlsBM291l9N7u7E5JO5JgBTLOxEX/5nlQdLc8wOk17zzUNysJTBFxSQqGKjSWi0q
bvxJ3FU3Q8+WnOR7n5w1jFNF0RxOnONqPyC5zjp31P9r4MXwVeQcehn0KnhtLN7R
mVwZOSj5xmRa4xpxuZxxiEFC5aZL2REmMDzq4UkCSnHgl2EUoL66m4RBAn5/XyTg
003RBRXx97vC7Ia5xQTYSkqVYXlIN9R2NW0AUEaXGul8a7ypgLgLJwrUHjrCVG04
X/ZyGovMMjaERnvnH0g7sAc2ZPVrOjBqsxthrxhqpyLez3nuqCwrmY+0cMttWbsF
E+WBKRYYw7zsgbUN9fsFaKvAWMeEFr4U+skCfmfLhNsGWat+cBhhpyEaksh5XEvA
wT5sgJoLfVNCtqmypPeiCQm1oAshaVeaMm67dlMJ3Ix2WJcc4BT5gjjvl5tN/VWH
WqtHtRImD4UqO7uam9/s62o1bfYayGTII8uAOF8zvWmlBJ/QMrPabCLhFRxFb2k3
XtTPe1vZBXox+QJ+AMUGaAVe1wB83XVtwQPE3KKAIP5x7O0l2nXb5srz2aiihI85
EfNktHF+qzKVMirsl/gCoPCTgKUAaz9ybOIwJXle6l1p7b42bWtwl3R1meWA9EQG
RepjBjol6i2HXMPBtutv4dv46wrgg03LenJeMbNmzOWRBByFOBsbEu1hAn5atCCC
opcD5bchp1y88hLpfByq2mRFH952P6oic39a5pGBEamiQYT9lRIQiuCdodZyFIEW
gmlCjOpJig1BoiazgkDrWCBk44IZvQb9EP4oIKEs20aShuR0F82dPMUDFiatE3Ln
+lwDKJbWUv8Cr/2Zuhf1M3z8reAYUJuXwEkCfiA9RAWC1G3GsAnYq63XM/sLSC15
MMCz9A+oNJNjlhFsqloUlIJI4r6y2/bOvlXlM2InoRvFDHXKNesNjqcv0j7n3RyJ
dmWfRQYAdOVjvwx5QobP2w+s9M5E4iWP+tx80Sw4o+phivqxDIPU3m0Sk0zi5om1
3S58fNNBSzT4TA==
-----END RSA PRIVATE KEY-----



[root@localhost bin]# openssl

#生成私钥
OpenSSL> genrsa -out rsa_private_key.pem 1024
Generating RSA private key, 1024 bit long modulus
....+++
.........................................................................+++
e is 65537 (0x10001)

#生成公钥
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
writing RSA key
OpenSSL> ^C


使用以上生成的公钥进行加密、私钥进行解密。


反之也可以  私钥进行加密,公钥解密 


RSA 加解密 属于 非对称加密.