《计算机网络》实验报告八 加密、数字签名与证书

目  录

1、实验目的

2、实验环境

3、实验内容

3.1 对称加密

3.2 散列函数

3.3 非对称加密

3.4 数字签名

3.5 证书

4、实验结果与分析

4.1 对称加密

4.2 散列函数

4.3 非对称加密

4.4 数字签名

4.5 证书

5、实验小结

5.1 问题与解决办法:

5.2 心得体会:


1、实验目的

        1、了解对称加密、非对称加密体制概念

        2、了解散列函数、数字签名和数字证书的概念和理论

        3、掌握基于Openssl的对称加密、密钥对的创建和应用

        4、掌握基于Openssl数字签名和数字证书的创建和应用


2、实验环境

        1、硬件要求:阿里云云主机ECS 一台、笔记本电脑一台

        2、软件要求:Linux/ Windows 操作系统


3、实验内容

        OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

        参考文献

https://www.openssl.org/

https://gitee.com/mirrors/openssl?

utm_source=alading&utm_campaign=repo#download

https://www.openssl.org/

https://www.jianshu.com/p/fb2ae3dc7986

3.1 对称加密

        安装Openssl,并准备任意内容的文本文档JM.txt,利用对称加密算法对JM.txt进行加密和解密操作。

3.2 散列函数

        计算JM.txt的MD5和SHA256散列值。

3.3 非对称加密

        创建2048位的公钥密码体制RSA密钥对。利用创建的公钥加密JM.txt,私钥进行解密操作。

3.4 数字签名

        对文件JM.txt进行数字签名并鉴别。

3.5 证书

        使用openssl创建自签名证书。


4、实验结果与分析

4.1 对称加密

        1. 登录阿里云服务器,使用如下命令进行OpenSSL的下载与安装。

yum install openssl openssl-devel -y

        2. 使用以下命令进行JM.txt文本文件的创建以及在文本文件中输入My-name-is-YuLiWei。

echo My-name-is-YuLiWei > JM.txt

        3. 使用以下命令进行所创建文本文件JM.txt内容信息的查看并输出。

cat JM.txt

        4. 使用以下命令通过利用对称加密算法对JM.txt文本文件进行加密,并将最后的加密文件加密到JMW.txt文件中。

openssl enc -e -des -in JM.txt -out JMW.txt -pass pass:123456

        5. 使用以下命令进行所创建文本文件JMW.txt内容信息的查看并输出,所输出的内容都是加密以后的内容,需要进行对应的解密才可以正常进行内容的查看。

cat JMW.txt

        6. 使用以下命令通过利用对称加密算法对JMW.txt文本文件进行解密,并将最后的解密文件保存到JMH.txt文件中。

openssl enc -d -des -in JMW.txt -out JMH.txt -pass pass:123456

7. 使用以下命令进行所创建文本文件JMH.txt内容信息的查看并输出,所输出的内容都是解密以后的内容,可以正常进行查看和阅读。

cat JMH.txt

4.2 散列函数

        1. 使用以下命令进行JM.txt文件内容散列值的获取,并将获取得到的散列值存放到MD5.txt文件中。

openssl md5 -out MD5.txt JM.txt

        2. 使用以下命令进行所保存散列值文件MD5.txt内容信息的查看并输出。

cat MD5.txt

        3. 使用以下命令进行JM.txt文件内容SHA256散列值的获取,并将获取得到的散列值存放到SHA256.txt文件中。

openssl sha256 -out SHA256.txt JM.txt

        4. 使用以下命令进行所保存SHA256散列值文件SHA256.txt内容信息的查看并输出。

cat SHA256.txt

4.3 非对称加密

        1. 使用以下命令完成创建 2048 位的私钥。

openssl genrsa -out private_key.pem 2048

        2. 使用以下命令生成 2048 位的公钥密码体制 RSA 密钥对。

openssl rsa -in private_key.pem -pubout -out public_key.pem

        3. 使用以下命令利用创建的公钥加密JM.txt文件内容到public.txt.encrypt文件中。

openssl rsautl -encrypt -in JM.txt -inkey public_key.pem -pubin -out public.txt.encrypt

4. 使用以下命令查看加密后public.txt.encrypt文件的内容。

cat public.txt.encrypt

5. 使用以下命令利用私钥将public.txt.encrypt 文件内容解密至 public.txt.decrypt 文件中。

openssl rsautl -decrypt -in public.txt.encrypt -inkey private_key.pem -out public.txt.decrypt

6. 使用以下命令查看并输出解密后的内容。

cat public.txt.decrypt

4.4 数字签名

        1. 使用以下命令对文件JM.txt进行数字签名进而生成私钥签名并将对应的签名文件保存为private.txt.signed。

openssl dgst -sha1 -sign private_key.pem -out private.txt.signed JM.txt

        2. 使用以下命令查看签名文件private.txt.signed的内容。

cat private.txt.signed

        3. 使用以下命令对private.txt.signed签名文件进行公钥验证签名。

openssl dgst -sha1 -verify public_key.pem -signature private.txt.signed JM.txt

4.5 证书

        1. 使用以下命令完成对根目录的创建。

openssl genrsa -out rootCA.key 4096

        2. 使用以下命令创建自签名根证书rootCA.crt,并将需要填写的信息填写到对应的显示输入栏目之中。

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 365 -out rootCA.crt

        3. 使用以下命令创建证书rootCA.crt的秘钥并将内容保存为Yho.com.key文件。

openssl genrsa -out Yho.com.key 4096

        4. 使用以下命令完成对 certificate.conf 文件的配置。

vi certificate.conf

        5. 通过上述命令进入到certificate.conf 文件中,进行相关文件内容的输入与配置工作,确保对应配置文件内容的完整和正确。

        6. 配置文件certificate.conf 配置完成后进行退出,先使用键盘的Esc进行页面的退出,然后输入以下命令进行命令行文件的退出。

:wq

        7. 使用以下命令完成对应签名的创建。

openssl req -new -key Yho.com.key -config certificate.conf -out Yhoo.com.csr

        8. 使用以下命令完成对应证书的生成。

openssl x509 -req -in Yhoo.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out Yhoo.com.crt -days 365 -sha256 -extfile certificate.conf -extensions req_ext

        9. 使用Xftp7远程连接对应的阿里云平台,使其在阿里云平台生成的文件可视化的显示到Xftp7的文件目录下,方便我们及时观测和文件内容的查看。


5、实验小结

5.1 问题与解决办法:

        1. 问题一:无法从证书颁发机构(CA机构)获取数字证书:

解决方法:确认证书颁发机构是否存在问题或访问证书颁发机构的步骤是否正确,尝试重新生成新的证书请求,或联系证书颁发机构寻求帮助。

        2. 问题二:安装了数字证书后,应用程序无法正常访问HTTPS资源:

解决方法:清除浏览器缓存和本地证书缓存后程序即可进行正常访问。

        3. 问题三:数字证书过期或被撤销:

解决方法:如果证书过期或被撤销,需要向CA机构请求新证书并重新申请数字签名。

        4. 问题四:显示数字签名验证失败:

解决方法:确认数字签名证书是否已过期或被撤销,或者是否存在其他安全问题。

        5. 问题五:显示私钥丢失或损坏:

解决方法:如果大规模数据丢失,可以采取恢复数据的方法。

        6. 问题六:显示无法获得数字签名证书:

解决方法:如果证书颁发机构无法提供证书,可以使用其它机构的证书来解决此问题。

        7. 问题七:对加密实现的代码安全性不够高:

解决方法:加强代码审查和安全性测试,以防止攻击者利用已知漏洞进行非法操作。

        8. 问题八:显示无法从阿里云平台获取数字证书。

解决方法:确认证书颁发机构是否存在问题或访问阿里云平台的步骤是否正确。

        9. 问题九:显示使用过程中需要证书验证,但无法获得证书。

解决方法:如果证书不再可用,可以向证书颁发机构请求新证书并重新申请。

        10. 问题十:在移动设备中无法使用数字证书。

解决方法:需要在移动设备上进行特殊设置或安装特殊的证书管理器来使用数字证书。

5.2 心得体会:

        1、对称加密:加密和解密使用相同的密钥,如DES、AES等。

        2、非对称加密:加密和解密使用不同的密钥,如RSA、ECC等。

        3、散列函数:将任意长度的消息转换成固定长度的散列值,如SHA-1、SHA-256等。

        4、数字签名:用私钥对消息进行签名,用公钥验证签名的真实性。

        5、数字证书:数字证书是由CA机构颁发的,用于验证数字签名的证书。

        6、证书链:包括根证书和中间CA证书,用于验证数字证书的可信度。

        7、SSL/TLS协议:用于在网络上提供安全的数据传输。

        8、HTTPS协议:基于HTTP协议的安全传输协议,通过SSL/TLS来保证安全性。

        9、安全套接层(SSL):在数据传输层上加密和解密数据。

        10、传输层安全协议(TLS):由SSL协议演化而来,提供更加安全的传输协议。

        11、PKCS:公钥基础设施标准,用于定义公钥加密和数字签名标准。

        12、自签名证书:由个人自己生成和使用的数字证书。

        13、数字证书吊销:风险证书在有效期内被撤销,应当立即停止使用。

        14、数字签名算法:如RSA、DSA、ECC等,用于生成数字签名。

        15、数字签名密钥长度:影响数字签名的安全性和效率。

        16、加密密钥长度:影响加密的安全性和效率。

        17、数字签名的应用:如电子合同、电子邮件、数字版权、电子证据等。

        18、数字证书管理:包括数字证书的申请、签发、吊销和更新等。

        19、密码学:涉及加密、解密、散列等技术的研究。

        20、在加密、数字签名和证书领域,安全性与实用性是需要平衡的。需要根据实际应用场景和需求来选择最合适的加密方法或数字证书。

        21、 数字证书是数字签名和信任的基石,但证书的可信度需要通过有效的认证机构来确保。

        22、加密算法和签名算法的安全性与密钥长度有关,如果密钥长度太小,可能会被攻击者破解。因此,需要根据安全性要求选择合适的密钥长度。

        23、在使用数字证书进行身份验证时,要注意证书的有效期以及是否被吊销。如果证书过期或已被吊销,将无法确定证书的可信度。

        24、数字签名是保护数据完整性和真实性的重要手段,可以用于验证数字内容是否被篡改或伪造。

        25、加密和数字签名的实现需要依赖密码学算法,因此需要密钥的保护和管理措施。

        26、数字签名的可复制性比较低,因此可以用于保护数字作品的版权和知识产权。

        27、在使用HTTPS协议时,需要通过CA机构颁发的数字证书来验证网站的真实性和可信度,保证数据传输的安全性。

        28、数字签名和证书的颁发需要具有双方身份的认证,否则可能会引起诈骗和欺诈行为。

        29、了解数字证书、数字签名和加密技术的原理和应用,是当今互联网世界不可或缺的技能,能够提高个人和企业的安全防护能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90503.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL(157)如何分析和优化存储过程?

分析和优化存储过程是数据库性能优化的重要环节。通过对存储过程进行分析和优化,可以提高数据库操作的执行效率,减少资源消耗,改善系统整体性能。以下是详细的步骤和代码示例,介绍如何分析和优化 MySQL 存储过程。 一、分析存储过…

基于深度学习的胸部 X 光图像肺炎分类系统(一)

本文先重点介绍了过采样的原理是实现。 由于医学数据相对缺乏,过采样是解决数据问题的方法之一。 后续写一篇搭建神经网络的说明 目录 概述 导入必要的库 数据加载和预处理函数 处理样本不均衡函数 构建改进的 CNN 模型函数 主函数 数据生成器generator&…

【PGCCC】在 Postgres 中构建复制安全的 LSM 树

在原生 Postgres 实现中,全文搜索由B 树或GIN(广义倒排索引)结构支持。这些索引针对相对快速的查找进行了优化,但受限于 B 树的写入吞吐量。 当我们构建pg_searchPostgres 搜索和分析扩展时,我们的优先级有所不同。为了…

架构如钟摆:在变与不变之间优雅平衡

在当今数字转型浪潮中,企业在“快速创新”与“长期稳定”之间反复拉扯。是否应该重建所有架构以适应AI?又是否该死守传统系统确保安全与合规?在The Open Group阿姆斯特丹峰会上,凯捷全球 CTO Ron Tolido 借用了一个极具画面感的比…

LLM中的位置嵌入矩阵(Position Embedding Matrix)是什么

LLM中的位置嵌入矩阵(Position Embedding Matrix)是什么 在大语言模型(LLM)中,位置嵌入矩阵(Position Embedding Matrix) 是用来表示输入序列中每个词的位置信息的矩阵。它的核心作用是:让模型能够区分“相同词在不同位置的语义差异”(比如“猫喜欢鱼”中的“猫”和“…

国产DevOps平台Gitee:如何重塑中国企业研发效能新格局

国产DevOps平台Gitee:如何重塑中国企业研发效能新格局 在全球数字化转型浪潮中,软件研发效率已成为企业竞争力的核心指标。作为中国最大的代码托管平台,Gitee正通过其全栈式DevOps解决方案,助力中国企业突破研发效能瓶颈&#xff…

告别混乱!【Java Web】项目分层架构全指南:核心三层 + 关键辅助包详解

目录 1.前言 2.正文 2.1为什么要分层 2.2核心三层详解 2.2.1Controller层(表现层/API层) 2.2.2Service层(业务逻辑层) 2.2.3DAO层(持久层) 2.3. 核心关系与数据流转:分层架构的交互逻辑…

解决Docker Compose报错

解决Docker Compose报错:exec ./entrypoint.sh: no such file or directory在使用Docker Compose部署应用时,你是否遇到过exec ./entrypoint.sh: no such file or directory这个令人头疼的错误?本文将深入分析错误原因并提供多种解决方案&…

【element plus】el-select,allow-create不需要点回车键

<el-selectv-model"row.expertName"filterableremoteallow-createdefault-first-optionreserve-keywordplaceholder"请输入姓名":remote-method"remoteMethod":loading"loadingName"change"(val) > handleNameChange(row, …

RK3588 HDMI-RX 驱动、RGA 加速与 OpenCV GStreamer 支持完整指南

一、环境检测与前置依赖 确认内核与 HDMI-RX 节点&#xff1a; uname -a # 输出&#xff1a;6.1.0-1025-rockchip ...dmesg | grep -i hdmirx # 应能看到 hdmirx-controller 节点&#xff1a; # fdee0000.hdmirx-controller driver probe ok!如果仅出现&#xff1a; rockchi…

AS32A601芯片QSPI 调试技术解析与与实战经验分享

一、概述&#xff08;一&#xff09;QSPI 简介QSPI&#xff08;Quad Serial Peripheral Interface&#xff09;是一种高速串行通信接口&#xff0c;在标准 SPI&#xff08;Serial Peripheral Interface&#xff09;的基础上扩展至 4 条数据线&#xff08;Quad Mode&#xff09;…

TDengine 转化函数 TO_TIMESTAMP 用户手册

TDengine TO_TIMESTAMP 函数用户使用手册 函数概述 TO_TIMESTAMP 是 TDengine 中的标量函数&#xff0c;用于将字符串按照指定格式转换为时间戳。该函数在数据导入、时间格式转换、以及处理各种时间字符串格式时非常有用。 语法 TO_TIMESTAMP(ts_str_literal, format_str_liter…

关于我司即将对商业间谍行为进行法律诉讼的通知

最后警告我司所属社交媒体中所有友商间谍&#xff1a;请于2025年7月26日上午十点前&#xff0c;自行删除我方好友&#xff0c;并停止通过欺诈行为&#xff08;包括但不限于冒充客户等&#xff09;盗取我司商业秘密的行为。十点后&#xff0c;我司将开始进行逐一排查&#xff0c…

【打怪升级 - 03】YOLO11/YOLO12/YOLOv10/YOLOv8 完全指南:从理论到代码实战,新手入门必看教程

引言&#xff1a;为什么选择 YOLO&#xff1f; 在目标检测领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列模型一直以其高效性和准确性备受关注。作为新版本&#xff0c;YOLO系列的新版本总能在前辈的基础上进行了多项改进&#xff0c;包括更高的检测精度…

JMeter每次压测前清除全部以确保异常率准确(以黑马点评为例、详细图解)

目录 一、前言 二、未清除全部会出现的情况(以乐观锁解决超卖问题为例) 三、清除全部就能得到准确的结果 一、前言 在学习黑马点评之前我并没有接触过JMeter这个压测软件&#xff0c;然后在黑马点评视频中老师也是直接拿起JMeter就开始使用&#xff0c;所以我一直在不断搜索…

关于新学C++编程Visual Studio 2022开始,使用Cmake工具构建Opencv和SDK在VS里编译项目开发简介笔记

1. C 项目build文件夹 2. VS解决方案管理器Solution——.sln文件 3. CMake 自动化构建工具 4. SDK软件开发工具包作为初学者&#xff0c;从工程项目开始接触完整一套流程工具和编译&#xff0c;有助于快速上手。 一、C 项目build文件夹在 VS2022 中打开 C 项目后&#xff0c;在…

测试ppyoloe的小样本few-shot能力,10张图片精度达到69.8%

近期公司有个项目&#xff0c;需要解决长尾样本的问题&#xff0c;所以测试了一下paddlepaddle小样本的能力。 环境&#xff1a;&#xff1a;T4 、ubuntu 、cuda-11.6 、py3.9、 paddlepaddle-gpu2.6.0、pip install opencv-python4.5.5.64 -i https://pypi.tuna.tsinghua.…

结构化布线系统详解

1. 结构化布线系统概述 结构化布线系统(Structured Cabling System, SCS)是一种标准化、模块化的建筑物或建筑群内信息传输基础设施&#xff0c;它为语音、数据、图像等多媒体业务提供了统一的物理传输介质。与传统的点对点布线方式不同&#xff0c;结构化布线采用层次化、标准…

【Java学习】匿名内部类的向外访问机制

目录 一、方法局部变量的访问 1.生命周期 1.1方法生命周期 1.2匿名实例生命周期 1.3生命超时性 2.变量捕获 2.1按值捕获 2.1.1值捕获优势 2.1.1.1生命及时访问 2.1.1.2线程安全 2.1.2常量值捕获优势 2.2按引用捕获 引用捕获风险 (1)生命超时访问 (2)线程不安全 …

LinkedList的模拟实现+LinkedList和ArrayList的区别

目录 LinkedList的模拟实现 什么是双向链表 增加数据 头插法&#xff1a; 尾插法&#xff1a; 指定的下标插入&#xff1a; 删除数据 删除双向链表中出现的第一个key 置空所有数据 LinkedList和ArrayList的区别 顺序表对应的集合类是ArrayList&#xff1b;链表对应的集…