加密/解密--数字信封/数字签名/数字证书

2024-05-10 03:20

本文主要是介绍加密/解密--数字信封/数字签名/数字证书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

what

加密

加密:加密就是对原来为明文的文件或数据按某种算法进行处理,使其成为一 段不可读的代码,通常称为 “密文”。从而达到保护数据不被非法窃取的目的。

解密

数据加密的逆向过程,将加密的数据转换为明文

加/解密工作机制

对称密钥算法(共享密钥算法)

---使用同一个密钥对数据进行加密和解密

这就意味着对称加密技术要通信双方需要事先共享相同的密钥,若攻击者得到私钥就能截获密文直接读取明文

用户A和用户B协商好对称密钥后,加解密过程如下:

① 用户A使用对称密钥将明文加密,并将密文发送给用户B。

② 用户B收到密文后,用对称密钥对密文进行解密,得到最初的明文。 

非对称密钥算法(公钥密钥算法)

----每个用户都要两个密钥:对外界所有人公开的公钥,只有自己知道的私钥

前者用于加密,后者用于解密

发送方以接收方的公钥 作为加密密钥,接收方使用自己的私钥作为解密密钥

① 用户A使用用户B的公钥对明文加密,并将密文发送给用户B。

② 用户B收到密文后,用自己的私钥对密文进行解密,得到最初的明文 

衍生技术

数字信封--双重加密保障

发送方A首先利用对称密钥加密要发送给接收方B的明文,再利用B的公钥加密对称密钥。被接收方公钥加密后的对称密钥被称为数字信封(这个信封里的内容是对称密钥加密过的明文)

----B收到A发来的信息,必须先用自己私钥解密数字信封,得到对称密钥,才能利用对称密钥解密收到的信息

① 用户A使用对称密钥对明文加密,生成密文。

② 用户A使用用户B的公钥加密对称密钥,生成数字信封。

③ 用户A将数字信封和密文信息一起发送给用户B 。

④ 用户B接收到用户A发送的加密信息后,使用自己的私钥打开数字信封,得到对 称密钥。

⑤ 用户B使用对称密钥对密文进行解密,得到最初的明文。

数字认签名---验证接收方明确数据没被篡改

发送方不仅通过非对称加密技术对明文加密,并且为了保证接收方能验证数据没被篡改(完整性)会将明文直接进行哈希技术得到摘要(不可逆性)。

接收方解密密文后,为验证内容完整性用相同的哈希算法来对解密得到的明文进行哈希计算生成摘要值。若B生成的摘要值与A发送的摘要值相同则证明内容没有被篡改。

① 用户A使用用户B的公钥对明文加密,生成密文。

② 用户A使用哈希算法对明文进行哈希计算,生成摘要信息。

③ 用户A使用自己的私钥对摘要信息进行加密,生成数字签名。

④ 用户A将密文和数字签名一起发送给用户B。

⑤ 用户B使用用户A的公钥对数字签名进行解密,得到摘要信息。

⑥ 用户B接收到用户A的加密信息后,使用自己的私钥对密文进行解密,得到最初 的明文。

⑦ 用户B使用与用户A相同的哈希算法对明文进行哈希计算,生成摘要信息。

⑧ 用户B将生成的摘要信息与从A收到的摘要信息进行比对。

• 如果一致,表示明文未经过篡改,则接受明文。

• 如果不一致,表示明文被篡改过,则丢弃明文。 

数字证书---验证公钥来源的可靠性

若攻击者直接将B存储的A的公钥更改为自己的公钥,这样攻击者发送伪造的信息给B,B能正常解密读取,但是在B看来这些信息都是A正常发送的。

为了确保公钥来源的可靠性, 公钥需要经过权威机构CA (Certificate Authority,证书颁发机构)认证后,才能被认为是可靠的

数字证书机构充当了第三方可信的中介,验证证书持有人的身份并签署证书,从而保证公钥的有效性。这样,其他用户可以通过验证证书的签名来确保公钥的真实性和完整性,从而建立起安全的通信。

PKI

PKI(Public Key Infrastructure,公钥基础设施)是一种通用性的安全基础设施,它利用公钥理论和技术来实现并提供信息安全服务。在通信过程中,通过PKI可以实现身份认证、信息保密、数据完整性校验和 不可否认性保障。

配置PKI的目的就是为指定的PKI实体向CA申请一个本地证书,并由PKI实体(终端)对本地证书的有效性进行验证。

 

这篇关于加密/解密--数字信封/数字签名/数字证书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975291

相关文章

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too