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

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

相关文章

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统