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

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、数字签名和哈希函数

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

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

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

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

作用:

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

 

        

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

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

相关文章

SQL 练习题目(入门级)

今天发现了一个练习SQL的网站--牛客网。里面题目挺多的,按照入门、简单、中等、困难进行了分类,可以直接在线输入SQL语句验证是否正确,并且提供了测试表的创建语句,也可以方便自己拓展练习,感觉还是很不错的一个网站&a…

ChromeDriver | 谷歌浏览器驱动下载地址 及 浏览器版本禁止更新

在使用selenoum时,需要chrome浏览器的版本和chrome浏览器驱动的版本一致匹配,才能进行自动化测试 一、ChromeDriver驱动镜像网址 国内可以搜到的谷歌浏览器下载地址里面最新的驱动器只有114版本的CNPM Binaries Mirror 在其他博主那找到了最新版本12X的…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现原理…

识别图片字符-PaddleOCR

PaddleOCR 是由百度开发的一个开源光学字符识别(OCR)工具,它可以识别图片中的文本信息。然而,PaddleOCR 本身主要专注于文本的检测与识别 安装PaddleOCR框架 pip install paddlepaddle paddleocr 使用PaddleOCR识别图片代码 fro…

STL - hash

1、unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到O(),即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好 的查询是,进…

第四十一回 还道村受三卷天书 宋公明遇九天玄女-python创建临时文件和文件夹

宋江想回家请老父亲上山,晁盖说过几天带领山寨人马一起去。宋江还是坚持一个人去。 宋江到了宋家村,被两个都头和捕快们追捕,慌不择路,躲进了一所古庙。一会儿,听见有人说:小童奉娘娘法旨,请星主…

SpringBoot2整合支付宝进行沙箱支付

目录 1. 进入支付宝的开放平台 2. 导入Maven依赖 3. 配置application.yml文件 NATAPP.cn(内网穿透工具) 注册登录 下载 4. 后端配置 5. 测试 1. 进入支付宝的开放平台 开发平台: 支付宝开放平台 登录后,点击控制台 点击最下面的沙箱 2. 导入Maven依赖 <dependency…

频率主义线性回归和贝叶斯线性回归

整体概述 频率主义&#xff08;Frequentist&#xff09;线性回归和贝叶斯&#xff08;Bayesian&#xff09;线性回归是统计学中用于数据分析和预测的两种主要方法&#xff0c;特别是在建模关于因变量和自变量之间线性关系的上下文中。尽管两种方法都用于线性回归分析&#xff…

【LeetCode】746. 使用最小花费爬楼梯(简单)——代码随想录算法训练营Day38

题目链接&#xff1a;746. 使用最小花费爬楼梯 题目描述 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 …

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 新建…

C++ CRTP设计范式

CRTP&#xff08;Curiously Recurring Template Pattern&#xff09;奇异递归模板范式是一个相对少有人知的C设计范式&#xff0c;它可以实现基类指针调用派生类的函数&#xff0c;从而实现另类多态。 如&#xff1a; #include <iostream> // 基类模板&#xff0c;接受…

Sora 一款文本转视频模型

**Sora** 是一个由美国人工智能研究机构 **OpenAI** 开发的 AI 视频模型。让我们一起了解一下这个令人兴奋的项目&#xff1a; 1. **名称和含义**&#xff1a; - 在日语中&#xff0c;**Sora** 是“天空”的意思&#xff0c;引申含义还有“自由”。 - **Sora** 的官方介绍页上展…

js之事件循环

JavaScript的事件循环是它的并发模型的核心部分&#xff0c;使得JavaScript能够在单线程中处理异步操作。事件循环允许JavaScript在执行代码时&#xff0c;同时进行非阻塞的I/O操作&#xff08;如网络请求、文件操作等&#xff09;。这个概念对于理解如何高效地构建交互式Web应…

本地模拟发送、接收RabbitMQ数据

文章目录 前言一、相关文章二、相关代码1.模拟的 Channel 类2.接收消息3.模拟推送MQ数据前言 日常开发中,当线上RabbitMQ坏境还没准备好时,可在本地模拟发送、接收消息 一、相关文章 Docker安装RabbitMQ 【SpringCloud】整合RabbitMQ六大模式应用(入门到精通) Spring R…

Spring学习笔记(三)--Spring中的Bean的管理

一、什么是Bean Bean是注册到Spring容器中的Java类&#xff0c;控制反转和依赖注入都是通过Bean实现的&#xff0c;任何一个Java类都可以是一个Bean。Bean由Spring进行管理&#xff0c;可以通过xml文件对bean进行配置和管理。 二、BeanFactory接口和ApplicationContext接口&a…

利用Python实现科学式占卜

一直以来&#xff0c;中式占卜都是基于算命先生手工实现&#xff0c;程序繁琐&#xff08;往往需要沐浴、计算天时、静心等等流程&#xff09;。准备工作复杂&#xff08;通常需要铜钱等道具&#xff09;&#xff0c;计算方法复杂&#xff0c;需要纯手工计算二进制并转换为最终…

2023年12月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 运行以下程序,输出的结果是?( ) class A():def __init__(self,x):self.x=x

手机连接电脑后资源管理器无法识别(识别设备但无法访问文件)

问题描述 小米8刷了pixel experience系统,今天用电脑连接后无法访问手机文件,但是手机选择了usb传输模式为文件传输 解决办法 在设备和打印机页面中右键选择属性 点击改变设置 卸载驱动,注意勾选删除设备的驱动程序软件 卸载后重新连接手机,电脑弹出希望对设备进行什么操作时…

Code-Audit(代码审计)习题记录4-5

4、习题4 题目内容如下&#xff1a; <?php error_reporting(0); show_source(__FILE__); $a $_REQUEST[hello]; eval("var_dump($a);"); 函数解释 $REQUEST — HTTP Request 变量&#xff0c;默认情况下包含了 [$GET]&#xff0c;[$POST] 和 [$COOKIE]的数…

HTML知识点

HTML 【一】HTML简介 【1】什么是HTML HTML是一种用于创建网页结构和内容的超文本标记语言&#xff0c;它是构建网页的基础。为了让浏览器正确渲染页面&#xff0c;我们必须遵循HTML的语法规则。浏览器在解析网页时会将HTML代码转换为可视化的页面&#xff0c;所以我们在浏览…