浅谈加密算法(对称加密、非对称加密、混合加密、数字签名、哈希函数)

1、对称加密

        对称加密只有一个密钥,直接使用这一个密钥对信息进行加密或解密。这样子就使得对称加密解密十分高效,计算量也相较于非对称加密小很多,适合有大量数据的场合。

        密钥只有一个且他一定不能泄漏。由此分发密钥,讲这个密钥传递给客户端是一件很有挑战性的事情。所以相较于非对称加密,对称加密的安全性低一些,因为再传递过程中密钥可能被他人获取。

常见对称加密算法:

  1. DES(Data Encryption Standard)

    • DES 是一种经典的对称加密算法,最早于 1976 年由美国联邦政府确定为数据加密标准。
    • 它将明文按 64 位进行分组加密,每组生成 64 位的密文。
    • DES 的密钥长度为 56 位,但实际上只有 48 位用于加密,其余用于错误检查。
    • 由于计算机的进步,DES 已经能够被暴力破解,因此已不再安全。
  2. 3DES(Triple Data Encryption Algorithm)

    • 3DES 是对 DES 的增强版,相当于对每组数据应用了三次 DES 算法。
    • 它使用三把独立的密钥,总长度为 168 比特。
    • 加密过程是以密钥 1、密钥 2、密钥 3 的顺序进行的。
  3. AES(Advanced Encryption Standard)

    • AES 是取代 DES 的一种新的对称加密算法。
    • 它的分组长度为 128 比特,密钥长度可以是 128、192 或 256 比特。
    • AES 是目前安全性较高、应用范围较广的对称加密算法。

2、非对称加密

        非对称加密再服务端时会生成一对密钥,分别为公钥私钥,这个公钥可以明文发送给客户端,之后所有客户端给服务端发送消息前,都先用公钥对消息进行加密,那么请求再网络中被非法获取,没有私钥的话也无法获取信息。之后客户端就可以放心的发送请求给服务端了。等请求打到服务端,服务端再用私钥将信息解密。

        两个密钥中,公钥可以公开,而私钥不在网络中传输,则没有被截取的危险。则安全性得到了很大的提升。当然计算效率相较于对称加密会慢。为什么公钥和私钥可以互相解密呢,这是数学上问题。

RSA加密算法:

  1. 密钥生成

    • 首先,选择两个大素数,通常记为 p 和 q
    • 计算 n = p * q
    • 根据欧拉函数,计算 r = (p - 1) * (q - 1)
    • 选择一个与 r 互质的整数 e,使得 e 与 r 满足 e * d ≡ 1 (mod r),其中 d 是 e 的模反元素。
    • 公开密钥为 (e, n),私有密钥为 (d, n)
  2. 加密方法

    • 将明文看作比特串,将明文划分成 k 位的块 P
    • 对每个数据块 P,计算 C = P^e (mod n),其中 C 即为 P 的密文。
  3. 解密方法

    • 对每个密文块 C,计算 P = C^d (mod n),其中 P 即为明文。


总之,RSA算法使用平方运算,明文以分组为单位进行加密,每个分组的二进制值小于 n。密钥的长度决定了加密的安全性,通常 n 的大小为1024位或309位十进制数。

3、混合加密

        混合加密就是为了利用对称加密的高效性和非对称加密的安全性。

  • 小明这边创建出公钥和私钥。
  • 小明将公钥发送给小红。
  • 小红随机生成一个密钥。并使用公钥对这个密钥进行加密
  • 此时小红再将这个密钥发送给小明,此时密钥再传递过程中处于加密状态,不怕配截取。
  • 小明、小红再通过这个密钥进行高效的对称加密通话了。

4、数字签名和哈希函数

        数字签名并不是对想要传递的信息进行加密,主要用途是用来身份验证的,判断这个信息是否由特定发送方发送。

        哈希函数是对一段信息产生内容摘要,待客户端接收信息后,再对信息原文进行哈希函数计算,对比两个内容摘要是否一样,防止信息再传输过程中被篡改

        而数字签名和哈希函数结合起来。此时和非对称加密反过来,是使用公钥进行加密的。

  • 先使用哈希函数对原文进行内容摘要。
  • 使用私钥对内容摘要和原文一起进行加密,发送给客户端。
  • 此时使用公钥对内容摘要进行解密,再对原文进行哈希函数生成内容摘要。
  • 两个内容摘要进行对比,如果相同则正确。

作用:

  • 身份认证:数字签名实现了用户的身份认证,确保消息是由特定发送方发送的。
  • 完整性保护:数字签名保证了数据在传输过程中的完整性,防止数据被篡改。
  • 不可否认性:数字签名使发送方无法否认发送过的消息,因为只有发送方的私钥能够生成有效的签名。

 

        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis---初阶

一、MyBatis作用 是一种更简单的操作和读取数据库的工具。 二、MyBatis准备工作 1、引入依赖 2、配置Mybatis(数据库连接信息) 3、定义接口 Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中,Mapper接口是用来定义SQL映射的接口,通…

Git 客户端可视化工具tortoisegit

Git 使用教程 git一点通 (kdocs.cn) 二、Git 客户端可视化工具-推荐 1.常用工具 tortoisegit 官网 https://tortoisegit.org/ 推荐 sourcetree 官网 https://www.sourcetreeapp.com/ 2.tortoisegit安装 2.1 下载安装包 2.2 下载语言包 2.3 安装 2.4 安装语言包 5.使用 5.1 新建…

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(一)

文章目录 效果展示说明利用工具整体思路Puppeteer 使用笔记保持登录状态打开新的页面点击 dialog跳转页面设置页面可见窗口大小寻找元素等待元素出现 整体代码 效果展示 说明 看了看网上很少做这个功能,但是我有这个需求,就抽出时间写了个简单的工具目前…

opengl 学习着色器

一.GLSL 着色器是使用一种叫GLSL的类C语言写成的。GLSL着色器编码顺序:声明版本》定义输入输出》uniform》main函数。每个着色器的入口点是main函数,在main函数中我们处理所有的输入变量,并将结果输出到输出变量中。如下图: #ver…

RocketMQ高可用架构涉及常用功能整理

RocketMQ高可用架构涉及常用功能整理 1. 集群高可用系统架构和相关组件1.1 架构说明1.2 相关概念说明1.3 消息模型1.3.1 点对点模型1.3.2 发布订阅模型1.3.3 消息过滤 2. rocketmq的核心参数3. rocketmq常用命令4. 事务性4.1 数据写入流程4.2 数据读流程4.3 事务消息 5. 疑问和…

QT_day2

1.思维导图 2.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#xff…

哈希应用 | 布隆过滤器概念 | 代码实现 | 哈希切割

文章目录 1.布隆过滤器1.1.布隆过滤器的基本概念1.2.代码实现1.3.测试代码分析误判率1.4.布隆过滤器的优点1.5.关于几道面试题 关于位图:往期分析的 博客链接 1.布隆过滤器 1.1.布隆过滤器的基本概念 布隆过滤器的引出 位图使用1个比特位 直接定址法,…

深入浅出JVM(一)之Hotspot虚拟机中的对象

本篇文章思维导图 对象的创建 对象的创建可以分为五个步骤:检查类加载,分配内存,初始化零值,设置对象头,执行实例构造器 类加载检查 HotSpot虚拟机遇到一条new指令,会先检查能否在常量池中定位到这个类的符号引用,检查这个类是否类加载过 没有类加载过就去类加载类加载过就进…

中国 AI 开课速度直逼美国 AI 颠覆性创新速度

原文链接: 中国 AI 开课速度直逼美国 AI 颠覆性创新速度 今日热帖,有网友发帖称:Sora 和 ChatGPT 告诉我们,美国确实是遥遥领先,而且还越拉越远。 是不是遥遥领先暂且不说,但领先我们的确是事实。 主要是…

多任务互斥及队列

一.互斥的引入 在FreeRTOS中,互斥(Mutex)是一种用于保护共享资源的机制。互斥锁可以确保同一时间只有一个任务能够访问共享资源,从而避免了竞态条件和数据不一致的问题。 FreeRTOS中互斥的引入方法: 创建互斥锁&#…

【笔记】【算法设计与分析 - 北航童咏昕教授】绪论

算法设计与分析 - 北航童咏昕教授 文章目录 算法的定义定义性质 算法的表示自然语言编程语言伪代码 算法的分析算法分析的原则渐近分析 算法的定义 定义 给定计算问题,算法是一系列良定义的计算步骤,逐一执行计算步骤即可得预期的输出。 性质 有穷性确…

【Linux】git操作 - gitee

1.使用 git 命令行 安装 git yum install git 2.使用gitee 注册账户 工作台 - Gitee.com 进入gitee,根据提示注册并登录 新建仓库 仓库名称仓库简介初始换仓库 3.Linux-git操作 进入仓库,选择“克隆/下载” 复制下面的两行命令进行git配置 然后将仓库clo…

c语言经典测试题2

1.题1 我们来思考一下它的结果是什么? 我们来分析一下:\\是转义为字符\,\123表示的是一个八进制,算一个字符,\t算一个字符,加上\0,应该有13个,但是strlen只计算\0前的字符个数。所以…

快速学习springsecurity最新版 (版本6.2)---用户认证

简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。目前比较主流的是另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富,但是shiro并不简便,这里轻量级安全框架更推荐国产安全框架satokensatoken官网 ​ 一般大型的项目都…

QT应用软件【协议篇】周立功CAN接口卡代码示例

文章目录 USBCAN系列CAN接口卡规格参数资料下载QT引用周立功的库安装sdk代码USBCAN系列CAN接口卡 USBCAN系列CAN接口卡兼容USB2.0全速规范,可支持1/2/4/8路CAN接口。采用该接口卡,PC机可通过USB连入CAN网络,进行CAN总线数据采集和处理,主要具备以下几大优势特点: 支持车载…

Matlab图像处理——图像编码解码

1.霍夫曼编码和解码 clear clc Iimread(lena.bmp); Iim2double(I)*255; [height,width]size(I); %求图像的大小 HWmatrixzeros(height,width); Matzeros(height,width); %建立大小与原图像大小相同的矩阵HWmatrix和Mat,矩阵元素为0。 HWmatrix(1,1)I(1,1); …

清洁力强的洗地机什么牌子最好?深度清洁的洗地机推荐

在相信很多人在做家务时,或许都会遇到一个尴尬的境地:虽然使用吸尘器清理了地面上的尘土和杂物,然后再使用拖把擦洗地板,但往往还是无法达到十分干净的效果。扫地机器人对于着色严重的垃圾,往往会出现越拖越脏的情况。…

Vue3之生命周期基础介绍

让我为大家介绍一下vue3的生命周期吧! 创建阶段:setup 我们直接console.log就可以了 console.log("创建");挂载阶段:onBeforeMount(挂载前)、onMounted(挂载完毕) import { onBeforeMount, onMounted } from vue; // 挂载前 on…

【前端】Vue-Cli 快速创建Vue3项目及一些项目初始化相关

文章目录 前言1. 安装1.1 安装 Vue 脚手架1.2 创建项目1.3 本地运行项目 2. 推送到仓库2.1 远程仓库准备2.2 关于gitIgnore文件2.3 通过git推送至远程仓库 3. 补充与总结3.1 npm 版本是否要升级到最新?3.2 这个项目建议的各种版本3.3 一般前端gitIgnore文件3.4 推荐…

蚂蚁集团开始招聘华为鸿蒙应用研发工程师

早在2023年12月7日支付宝宣布将全面启动鸿蒙原生应用开发。华为表示,支付宝将基于HarmonyOS NEXT版本开发应用,给消费者带来全场景的新体验。头部应用伙伴的加入,大力推动了鸿蒙生态进一步完善。 就近期蚂蚁集团开始招聘华为鸿蒙应用研发工程…