一种使用RSA非对称加密与AES对称加密的联合加密的解决方案以及过程复盘
对于现在互联网的环境而已 日益发展的如今,网络安全问题所引发的一系列安全问题进而引发商业秘密泄露、企事业/个人的经济损失,更有甚者是网络犯罪,或殃及国家安全。
目前开发场景中,需要对一些关键信息进行加密传输 ,除了一些服务器运维层面,如防火墙,监控软件等等,还有开启https加密外,我们这里采取RSA与AES两个加解密算法来实现信息的加解密传输。具体步骤如下:
步骤一、先使用工具或命令 生成一个RSA的公私钥
这里 我们使用在线网站工具生成 http://www.metools.info/code/c80.html
得出公钥:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIIQ0Vs0/Ht8gNBCoGNn
GyuDu2ExPwSRtindJUydTPcPevP6V+F3zuuk3MfuW9WWC/Hcr61z1LHxLi11NRVv
P21WBNXyEZl8R+L4FxTuILGrYsucu7C/Y+BW/MyVPTwKgKEF8y2DrpXoCQlDtPdB
JYjOx5K1Rc3GHpynWpx5v3fqYsF7ISwy6HC1JwlCSDUj96kFwpL4xtSnWO+5E0LZ
3VDqrMBjqrEl26nlbE1Sxl2PwSSITjumqAvr8ndTmjELKRmwxCFZ/sKAOMPHFGEg
L2TzgaU+PrUG2ClicmKikNf/rKmJfkSq2zTmC/4RnOIQfQreVnPjRAcHIQlRVoW3
ZwIDAQAB
-----END PUBLIC KEY-----
得出私钥:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8ghDRWzT8e3yA
0EKgY2cbK4O7YTE/BJG2Kd0lTJ1M9w968/pX4XfO66Tcx+5b1ZYL8dyvrXPUsfEu
LXU1FW8/bVYE1fIRmXxH4vgXFO4gsatiy5y7sL9j4Fb8zJU9PAqAoQXzLYOulegJ
CUO090EliM7HkrVFzcYenKdanHm/d+piwXshLDLocLUnCUJINSP3qQXCkvjG1KdY
77kTQtndUOqswGOqsSXbqeVsTVLGXY/BJIhOO6aoC+vyd1OaMQspGbDEIVn+woA4
w8cUYSAvZPOBpT4+tQbYKWJyYqKQ1/+sqYl+RKrbNOYL/hGc4hB9Ct5Wc+NEBwch
CVFWhbdnAgMBAAECggEAGVFWtOeNDEQBisNtz2DKXknP3YDGPnJ8p3yj6PiLP+UG
vTq7asYrcy0O7WAk0Uy0ZFJNk4K2ReDIRa1xSnnggSJMJUYexuJYYMdJDsCO4vE5
1YEHQeYRLnbY+Ab6HElOF8yIogqA3xffHCeUYl+67jGbpA4+LmveqgncKD1P1Lkp
PZJ1rhpE8p4UoBk6B9hvbXaMS6HZo9uHCwvNNp1+VXP7grmLnPcX2gBwmjMVtmT3
dwgD0scCjcxEm7q27UFwGr9GoxrgGdrymtnU/kCLKZTIBJVEIYaov6fNfmO8hjuR
oFxamgNlorbkgK9s+F8xqIECBtnildlP8wRm8FVB8QKBgQDl+uTkLhJuWh35/LB8
jdAgKg6x4dkFttSXuUpf3LVXPmEHHI+sWLyjAwwNctm2uZaqCupLGq+/2R9dMkJS
GWqeAtRVdX/mFEJSCSouNT68BJPGz406wclfnd9W2nxD6Mw1W3My5u6dP60rlmml
krNF6tS3XVAvdC5U4/rsQyL/kwKBgQDR1fvKLgbj/9afEJUW5nkLxnLld/XiYGnX
8Iip8GGB1k3rZTstNomD62WE1Ti+2ZGedJH9mZuvSr24V2gs1umFSLmJikSFwKWg
quebFF9ArkeeFbMDHazwgs83y8AgW9es4s8PnWK+frirwUJbLUDwY7cnnf3owMil
x+T65YsFXQKBgAzvTYxf4v196A21Xp/Cwh/s/aKXl0MxA0f9TeeSXEip438o5hPF
ceahNz5SZVhXm9e4gXDz8UqTBaaSOxSvBUYZ1qNv1l+0Z/6BMXQj3oFoqH8YEVNq
rs7H7FXQOAkBwOqHWDVWs7j4ad73uL1tQNP/3zLo9qeUmz5/DA/ZvtAtAoGBAIiB
Vh1+t8jXBD3SQcr1/8TjQpd45KJx6ikqNx2mXShjy6jY4BhXpDoHhrFVLGcrjomw
d9CsfxUX4Dft1L1myd+FIf4RzuXcH2NYCvdd12FyfvCeWSgrw/dqgXdguwnR9Ypo
uh8EWdpnAafqP0qlM9uuYtYI98bUszL1yUZW0YuZAoGAdQNhMmeLWDyb+kAhzhde
aVFJv3HQXM1zmuV69Kf3VYIvW6i0QVVicMQH68/0ARD4iXjGSun+T9pLxDrpCnr6
qBGJL2+q3c3d+mfVy1HuWTrXyDwModuIxtRqbdW2lT5OQ52E/XPaeMxlsHq8magz
WBedmvwOT8m4lKn5a2GjYOY=
-----END PRIVATE KEY-----
步骤二、生成一个随机数,使用RSA生成的公钥去解密随机数信息,得加密key
这里RSA我们使用在线网址工具进行转化 http://www.metools.info/code/c81.html
如随机数为 J83683fGgS
得出加密key:
XHew7bE1XOW9e7ex4eIX3iAtlpWgZD0N2JLPpWjKjWFOPFJFMW24iOlfO4IwHFuatxszpgPuf2+tI6Ip9OZsFTMV5KwYp6yRRCcuQbg03xUCfSU/XJ7dqNA/NR9whZNZ8JhFQiJOy3epGdPCoqGWv2HoeDaecPqVDHcy29RO5pXUo4CPRlHKrOy9KOOQ9LuBLnV7DT7stHusGeObb94e+cjV9xvShqqnvncWahKs80Grbv9luRUBJ++gXHroz7Pjb3q2mmDMcFDWfXHHzm0Lv4WeiA73SUPuzg5FPGpD2vhi81DmC2FQaWN4ww4SHf1qaNq+nywGbSKdWAaCZ7Mkyg==
步骤三、将要加密的信息使用AES加密算法进行一个加密,其密码为我们第二步定义的明文key
这里AES我们使用在线网址工具进行转化 http://www.metools.info/code/c24.html
如 加密信息为hello world 字符串 ,得出AES的加密data
U2FsdGVkX1+2kZWkbcUy4HUsJadSmXdKq/8RwSKRV2M=
如今 将两个加密信息 key 与密文data进行传输 至此,信息的加密过程已经结束。下面将介绍其解密过程。
步骤四、将第一步生成的私钥进行下发 给予解密者,解密者拿到加密后的data与key进行解密操作。
步骤五、使用私钥解密密文key,得明文key
这里 我们使用在线网站工具进行解密 http://www.metools.info/code/c81.html
得到明文key :
J83683fGgS
步骤六、使用明文key作为其AES的解密密码,对其密文data进行解密
得出最终的明文data 即hello world 字符串。
至此 整个加解密过程结束。
此方案适用与各种语言,是跨语言边界的。上诉只是一种加解密的思路,仅供参考,欢迎交流。谢谢。