实验九
4.1 对称加密
4.1.1 加密命令:openssl enc -e -des3 -a -salt -in lx.txt -out test.cipher
4.1.2 解密命令:openssl enc -d -des3 -a -salt -in test.cipher -out testout.txt
4.1.3 查看解密文件testout.txt和源文件lx.txt文件内容
4.1.4 openssl命令解释
-in filename:指定要加密的文件存放路径
-out filename:指定加密后的文件存放路径
-salt:自动插入一个随机数作为文件内容加密,默认选项 加点盐:)
-e:加密;
-d:解密,解密时也可以指定算法,若不指定则使用默认算法,但一定要与加密时的算法一致
-a/-base64:当进行加解密时,他只对数据进行运算,有时需要进行base64转换,设置
此选项后加密结果进行base64编码,解密前先进行base64编码。
加密解密算法可以通过自己制定,有什么算法可以通过openssl help enc去查看加密内容。
4.2 散列函数
4.2.1 查看lx.txt的md5值
4.2.2 查看lx.txt的SHA256值
4.3 非对称加密
4.3.1 创建公钥
-out指定生成文件的,即私钥,后面的2048是生成密钥的长度。
4.3.2 将这个文件中的公钥提取出来
-in指定输入文件,-out指定提取生成公钥的文件名。现在得到了公钥test_pub.key,私钥test.key。
4.3.3 在目录中创建一个hello的文本文件,然后利用此前生成的公钥加密文件
-in指定要加密的文件,-inkey指定密钥,-pubin表明是用纯公钥文件加密,-out为加密后的文件。
4.3.4 解密文件
-in指定被加密的文件,-inkey指定私钥文件,-out为解密后的文件。
4.3.5 比较源文件lx.txt和解密文件lwxkey.txt
4.4 数字签名
4.4.1 创建私钥
RSA加密算法产生的2048位私钥,并使用F4作为公钥的E参数,将私钥保存在文件key.pri中
4.4.2 查看私钥
以PEM格式显示私钥的明文输出密钥参数
4.4.3 生成公钥
4.4.4 对lx.txt进行数字签名并查看:产生签名文件src.sig
4.4.5 公钥校验
发送者将原文件src.txt、公钥文件key.pub和签名文件src.sig传输给接收者,接收者模拟校验操作。
若显示:Verified OK: 则表示用公钥校验签名文件是正常的,即接收到的原文件是无篡改和可信的。
若显示:Verification Failure:则表示接收到的文件有篡改或不可信的。
4.5 证书
4.5.1 生成私钥
4.5.2 去除私钥中的密码
有密码的私钥是server.pass.key,没有密码的私钥是server.key
4.5.3 生成CSR(证书签名请求)
req 生成证书签名请求
-new 新生成
-key 私钥文件
-out 生成的CSR文件
-subj 生成CSR证书的参数
/C= Country 国家 CN
/ST= State or Province 省 Guangdong
/L= Location or City 城市 Guangzhou
/O= Organization 组织或企业 xdevops
/OU= Organization Unit 部门 xdevops
/CN= Common Name 域名或IP gitlab.xdevops.cn
4.5.4 生成自签名SSL证书
-days 证书有效期
X.509证书包含三个文件:key,csr,crt。
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
4.6 总结
4.6.1 加密算法
1.对称加密算法
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
2.非对称加密算法
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。
DH算法一般用户密钥交换。
SA算法既可以用于密钥交换,也可以用于数字签名。
DSA算法则一般只用于数字签名。
4.6.2 数字签名
数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。数字签名是个加密的过程,数字签名验证是个解密的过程。
数字签名的原理是?
数字签名技术是将原文通过特定HASH函数得到的摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文提炼出一个摘要信息,与解密得到的摘要进行对比。哪怕只是一个字符不相同,用HASH函数生成的摘要就一定不同。如果比对结果一致,则说明收到的信息是完整的,在传输过程中没有被修改,否则信息一定被修改过,因此数字签名能够验证信息的完整性。
数字签名的作用是?
一是能确定消息的不可抵赖性,因为他人假冒不了发送方的私钥签名。发送方是用自己的私钥对信息进行加密的,只有使用发送方的公钥才能解密。
二是数字签名能保障消息的完整性。一次数字签名采用一个特定的哈希函数,它对不同文件产生的数字摘要的值也是不相同的。
4.6.3 自签名SSL证书
自签名的SSL证书制作极其简单,几句openssl命令即可生成一个密钥和证书。但是:
自签名证书在网络上是不可信的,但如果只是自己家里、局域网内测试,是没有问题的。因为现在很多应用全都强制要求是https,所以自己电脑、家里服务器也都必须装配ssl证书。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律