在项目中,经常会使用到数据加密,今天就来看看RSA的 公钥和私钥是如何生成的。
公钥和私钥 是通过 openssl 生成的。
在windows下,可以使用 apache 中的 openssl 进行生成 。
这里有一个网址可以动态生成rsa的公钥和私钥:
http://web.chacuo.net/netrsakeypair
linux下直接在命令行下,执行 openssl ,如果不存在,使用 yum install -y openssl genrsa rsa
同时安装这三个命令,待安装成功后:
好的,具体看一下是如何操作的:
记住:公钥是根据私钥生成的,根据私钥可以计算出公钥
http://tool.chacuo.net/cryptgetpubkey
看结果
嗯,就是这样
使用 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 加解密 属于 非对称加密.