用OpenSSL实现RSA/AES加解密

基本思想是这样的:
1.用随机生成的32字节密码对文件经行AES加密;
2.将随机密码用RSA的公钥加密;
3.将加密后的随机密码和密文通过网络等渠道传送给接受者;
4.接受者用RSA私钥解密随机密码;
5.用解密后的随机密码解密密文;


这么做的理由:
1.RSA是非对称加密算法,安全性最好,即使公钥泄露也无法对密文进行解密。缺点是加密速度慢,只能加密小数据。因此用RSA加密仅32字节的随机密码;
2.AES是对称加密,可以加密大数据。但加解密用的是同一个密码,密码必须加密后才能传输。因此用AES来加密报文,再用RSA对AES的密码进行加密。


转载请注明出处:http://blog.sina.com.cn/txcary


过程命令:
#生成RSA秘钥对
openssl genrsa -out key.pri 2048
openssl rsa -in key.pri -pubout -out key.pub


#生成随机密码
openssl rand -out passwd.bin 32


#用AES加密报文
openssl enc -aes-256-ecb -in test.txt -out test.enc -pass file:passwd.txt
rm -f test.txt


#用RSA加密随机密码
openssl rsautl -encrypt -in passwd.bin -inkey key.pub -pubin -out passwd.enc
rm -f passwd.bin


#传输
发送passwd.enc和test.enc


#解密随机密码
openssl rsautl -decrypt -in passwd.enc -out passwd.bin -inkey key.pri


#解密密文
openssl enc -d -aes-256-ecb -in test.enc -out test.txt -pass file:passwd.bin

猜你喜欢

转载自blog.csdn.net/qq_19004627/article/details/80459177