您当前的位置: 首页 >  ssl

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SSL基础:8:非对称加密算法在加密和解密中的使用

发布时间:2019-12-10 20:24:31 ,浏览量:0

在这里插入图片描述 前篇文章介绍如何使用对称加密算法来对文件进行加密和解密操作,这篇文章以RSA为例介绍非对称加密算法的使用方式。

场景说明: 在前面的文章中介绍了签名的方式:https://liumiaocn.blog.csdn.net/article/details/103457878。在文章中提到了如何使用公钥和签名文件进行签名的验证,由于签名验证方式只用到了签名文件和公钥,而一同发送的另外一个文件messages则没有使用,如果签名文件在中途被修改了,使用者使用公钥进行签名验证时会提示验证无法通过。但是messages文件没有被修改则没有保证,这篇文章继续介绍一下保证messages文件在传输过程中不被修改的方法,使用的算法为非对称加密算法。

加密解密流程

无论是对称加密算法还是非对称加密算法整体流程都是一致的,加密解密的一般流程如下所示:

文件加密
文件传输
文件解密
使用示例

RSA是典型的非对称加密算法,这里以RSA算法为例进行文件加密和解密的说明。

事前准备

准备如下的messages文件,或者其他任意用来验证的文件均可。

[root@liumiaocn rsa]# echo "Hello, this is greeting from liumiao" >messages
[root@liumiaocn rsa]# cat messages 
Hello, this is greeting from liumiao
[root@liumiaocn rsa]#
  • 准备私钥文件
[root@liumiaocn rsa]# openssl genrsa -out rsa_key.private 1024
Generating RSA private key, 1024 bit long modulus (2 primes)
.+++++
.....................+++++
e is 65537 (0x010001)
[root@liumiaocn rsa]# 
[root@liumiaocn rsa]# ls -l
total 8
-rw-r--r--. 1 root root  37 Dec  9 06:51 messages
-rw-------. 1 root root 887 Dec  9 06:52 rsa_key.private
[root@liumiaocn rsa]#
  • 准备公钥文件 从私钥中提取如下公钥文件
[root@liumiaocn rsa]# openssl rsa -in rsa_key.private -pubout -out rsa_key.public
writing RSA key
[root@liumiaocn rsa]# ls -l
total 12
-rw-r--r--. 1 root root  37 Dec  9 06:51 messages
-rw-------. 1 root root 887 Dec  9 06:52 rsa_key.private
-rw-r--r--. 1 root root 272 Dec  9 06:52 rsa_key.public
[root@liumiaocn rsa]# cat rsa_key.public 
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLso6AoGmKuhoBAsDuTkWwIiHn
qCoruH/SPLEgzw6+a+2YDw9lOqB1RVvhR9iWAxwA0TxVF96DxVk1mxEA7gYpCkV4
dOkxT483UIW7sLm/0ViQqMrYMWTnIIG+xtcNSwbBUZEOxZb0+f/91xriM40duPxW
ACuQgwdU5WGeE145RwIDAQAB
-----END PUBLIC KEY-----
[root@liumiaocn rsa]#
使用公钥对文件进行加密

使用openssl rsautl可以指定加密算法对文件进行加密,生成新的加密文件。

[root@liumiaocn rsa]# openssl rsautl -encrypt -in messages -out enc_messages -pubin -inkey rsa_key.public 
[root@liumiaocn rsa]# ls -lrt
total 16
-rw-r--r--. 1 root root  37 Dec  9 06:51 messages
-rw-------. 1 root root 887 Dec  9 06:52 rsa_key.private
-rw-r--r--. 1 root root 272 Dec  9 06:52 rsa_key.public
-rw-r--r--. 1 root root 128 Dec  9 06:58 enc_messages
[root@liumiaocn rsa]#

实际上新生成的文件已经是加密过的了,直接view可能看到的都是乱码。

使用私钥对文件进行解密

文件解密通过-decrypt选项指定解密操作,同时可结合-out指定输出文件,执行示例如下所示:

[root@liumiaocn rsa]# openssl rsautl -decrypt -in enc_messages -out dec_messages -inkey rsa_key.private 
[root@liumiaocn rsa]# ls -lrt
total 20
-rw-r--r--. 1 root root  37 Dec  9 06:51 messages
-rw-------. 1 root root 887 Dec  9 06:52 rsa_key.private
-rw-r--r--. 1 root root 272 Dec  9 06:52 rsa_key.public
-rw-r--r--. 1 root root 128 Dec  9 06:58 enc_messages
-rw-r--r--. 1 root root  37 Dec  9 06:59 dec_messages
[root@liumiaocn rsa]#

此时再确认解密后的文件,已经是和原始文件的内容没有区别了

[root@liumiaocn rsa]# cat dec_messages 
Hello, this is greeting from liumiao
[root@liumiaocn rsa]# diff dec_messages messages 
[root@liumiaocn rsa]#
注意事项

使用rsautl加密/解密,可用的文件一般都是较小的Size,否则容易出现如下类似的错误提示信息:

[root@liumiaocn rsa]# openssl rsautl -encrypt -in messages.tar.gz -inkey rsa_key.private 
RSA operation error
139708920309568:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:crypto/rsa/rsa_pk1.c:125:
[root@liumiaocn rsa]#
总结

非对称加密算法,加密和解密使用不同钥匙,更好地保证了使用过程中的安全性,也有了更为广泛的适应性。

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.9759s