密码学【第三节:对称密码-DES\AES】

news2024/11/26 1:51:44

前言

在密码学中,加密算法分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。双向加密包括对称加密和非对称加密,对称加密包括AES加密、DES加密等。双向加密是可逆的,存在密文的密钥。AES算法是DES算法的替代者,也是现在最流行的加密算法之一。

目录

前言

一、DES加密算法

什么是DES加密算法

DES加密算法的原理

二、AES加密算法

什么是AES加密算法

AES加密算法的原理

三、DES与AES的区别比较

AES和DES算法的主要区别

四、加密解密工具推荐


一、DES加密算法

什么是DES加密算法

DES加密算法,为对称加密算法中的一种。70年代初由IBM研发,后1977年被美国国家标准局采纳为数据加密标准,即DES全称的由来:Data Encryption StandardDES,也是是目前最为流行的加密算法之一

DES加密算法的原理

DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。

DES是以64比特的明文为一个单位来进行加密的,超过64比特的数据,要求按固定的64比特的大小分组,分组有很多模式。DES使用的密钥长度为64比特,但由于每隔7个比特设置一个奇偶校验位,因此其密钥长度实际为56比特(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)奇偶校验为最简单的错误检测码,即根据一组二进制代码中1的个数是奇数或偶数来检测错误。

分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。 

梳理整个过程

第一步:将初始密钥(64位,实际使用54位)转换成16个子密钥(48位),将明文(明文需要一组一组的来,一组64位)

第二步:将分组好的明文又拆分成2组32位配上密钥进行加密

第三步:进行16轮的替代或交换的方式进行加密,并且一轮使用一个子密钥

第四步:得到密文(一组一组的得到,一组为64位)

详细过程原理以及实现请看大佬文章数据加密算法--详解DES加密算法原理与实现 - DreamGo - 博客园 (cnblogs.com) 

二、AES加密算法

什么是AES加密算法

AES是高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,目前已经被全世界广泛使用,同时AES已经成为对称密钥加密中最流行的算法之一。

AES加密算法的原理

AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位(如果不足则使用填充方式),也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,且每一轮均需要一个子密钥,如下表所示:

AES密钥长度(32位比特字)分组长度(32位比特字)加密轮数
AES-1284410
AES-1926412
AES-2568414

Tip:平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用 

密钥扩展:其复杂性是确保算法安全性的重要部分。当密钥长度是128位时,AES的加密算法共迭代10轮,需要10个子密钥。AES的密钥扩展的目的是将输入的128位密钥扩展成11个128位的子密钥。AES的密钥扩展算法是以字为一个基本单位(一个字为4个字节),刚好是密钥矩阵的一列。因此4个字(128位)密钥需要扩展成11个子密钥,共44个字。

生成子密钥的数量比AES算法的轮数多一个,因为第一个密钥加法层进行密钥漂白时也需要子密钥。密钥漂白是指在AES的输入和输出中都使用的子密钥的XOR加法子密钥在图中都存储在W[0]、W[1]、...、W[43]的扩展密钥数组之中。k1-k16表示原始密钥对应的字节

AES加密算法涉及4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。下图给出了AES加解密的流程

梳理整个过程

第一步:将对密钥进行扩散,明文进行分组

第二步:进行加密算法过程:字节替代、行位移、列混肴、轮密钥加

第三步:生成密文

 详细过程原理看大佬文章

AES加密算法原理(加密过程) - Shawn_Michaels - 博客园 (cnblogs.com)


 

三、DES与AES的区别比较

AES和DES算法的主要区别

AES与DES之间的主要区别在于加密过程。在DES中,将明文分为两半,然后再进行进一步处理;而在AES中,整个块不进行除法,整个块一起处理以生成密文。相对而言,AES比DES快得多,与DES相比,AES能够在几秒钟内加密大型文件。

由于DES中使用的共享密钥的比特大小较小,因此它被认为不如AES安全。DES被认为更容易受到暴力攻击,而到目前为止,尚未遇到任何严重攻击的AES。

在灵活性的基础上评估算法的实现,AES比DES更具灵活性,因为它允许包括128、192、256位在内的各种长度的文本,而DES允许对64位固定文本进行加密。

DES回合处理中使用的功能是扩展,置换和替换,具有回合键的XOR操作,而AES回合中使用的功能是子字节,移位行,混合列和添加回合键。AES实际上在硬件和软件实现上都是高效的,而DES最初只在硬件上有效。

DES算法缺点:

分组比较短、密钥太短、密码生命周期短、运算速度较慢。

DES算法优点:

DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。

AES算法缺点:

目前尚未存在对AES 算法完整版的成功攻击,但已经提出对其简化算法的攻击。

AES算法优点:

1、运算速度快,对内存的需求非常低,适合于受限环境。

2、分组长度和密钥长度设计灵活, AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。

3、 AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能破解的。

4、具有很好的抵抗差分密码分析及线性密码分析的能力。

总而言之,AES和DES算法之间的区别就是加密过程,这两种算法都有自己的优缺点,相对来说,AES比DES安全性高,运算速度快。

四、加密解密工具推荐

在线AES加密/解密工具,可以输入密钥进行加密和解密,支持可逆加密和解密操作,大家可以去测试:https://md5.cn/

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

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

相关文章

Java 大厂八股文面试专题-JVM相关面试题 类加载器

Java 大厂八股文面试专题-设计模式 工厂方法模式、策略模式、责任链模式-CSDN博客 JVM相关面试题 1 JVM组成 1.1 JVM由那些部分组成,运行流程是什么? 难易程度:☆☆☆ 出现频率:☆☆☆☆ JVM是什么 Java Virtual Machine Java程序…

openGauss学习笔记-81 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用概述

文章目录 openGauss学习笔记-81 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用概述 openGauss学习笔记-81 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用概述 MOT作为openGauss的一部分自动部署。有关如何计算和规划所需的内存和存储资源以维持工…

Vue watch实时计算器

watch实时计算器 可以自己选择、-、*、 参考代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.7.10/vue.js"></script>…

Redis安装部署和常用命令

文章目录 一、关系数据库与非关系型数据库1.1 关系型数据库1.2 非关系型数据库1.3 关系型数据库和非关系型数据库区别1.4 非关系型数据库产生背景1.5 小结 二、Redis基本概念2.1 Redis 简介2.2 Redis的优点2.3 使用场景2.4 哪些数据适合放入缓存中&#xff1f;2.5 Redis的数据类…

2015-2022年商道融绿 ESG数据

2015-2022年商道融绿 ESG数据 1、时间&#xff1a;2015-2022年 2、指标&#xff1a;证券代码、证券简称、商道融绿ESG评级 3、范围&#xff1a;沪深A股上市公司 4、来源&#xff1a;整理自wind 5、指标解释&#xff1a; 商道融绿&#xff08;Sustainalytics&#xff09;E…

【Flink、java】

依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.11</artifactId><version>1.14.6</version></dependency><dependency><groupId>org.apache.flink</groupId>&…

jenkins流水线实现xjar加固

jenkins流水线实现xjar加固 xjar的定义 Spring Boot JAR 安全加密运行工具&#xff0c;同时支持的原生JAR。 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动&#xff0c;动态解密运行的方案&#xff0c;避免源码泄露或反编译功能特性 无需侵入代码&am…

nvm nodejs的版本管理工具

nvm 全英文名叫 node.js version management&#xff0c;是一个 nodejs 的版本管理工具&#xff0c;为了解决 nodejs 各种版本存在不兼容现象可以通过他安装和切换不同版本的 nodejs。 一、完全删除之前的 node 和 npm 1. 打开 cmd 命令窗口&#xff0c;输入 npm cache clean…

rs渲染VRAM内存不足怎么解决?Redshift 处理 VRAM 不足的情况

在某些极少数情况下&#xff0c;Redshift 可能会生成以下类型的消息并中止渲染&#xff1a; Redshift cannot operate with less than 256MB of free VRAM. Frame rendering aborted. 或者… There is less than 128MB of free VRAM once fixed data and minimal ray memory ar…

用简单例子讲清楚webgl模板测试

文章目录 搭建简易的webgl环境绘制简单三角形&#xff08;不带stencilTest)绘制另一个三角形&#xff08;不带模板测试&#xff09;加入模板测试总结调参练习 搭建简易的webgl环境 一直以来&#xff0c;我只是想通过搭建纯webgl环境&#xff0c;进行开发&#xff0c;来清楚地了…

计算机毕业设计 基于微信小程序的学习资料销售平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

IP地址最终弹,DNS,数据链路层,特殊地址

目录 一、特殊地址 二、数据链路层 三、DNS 一、特殊地址 将IP地址中的主机IP全部设置为0&#xff0c;就成了网络号&#xff0c;代表这个局域网&#xff08;不可给具体的设备分配这个IP&#xff09; 将IP地址中的主机IP全部设置为1&#xff0c;就成了广播地址&#xff0c;给同…

灰色预测GM(1,1)

目录 一、灰色预测模型简介 二、GM(1,1)灰色模型 1、GM(1,1)模型预测方法 &#xff08;1&#xff09;原始数据&#xff08;参考列&#xff09; &#xff08;2&#xff09;累加生成序列&#xff08;Acumulated Generating Operator,1-AGO&#xff09; &#xff08;3&#xff…

一台电脑安装多个不同版本Python

1、前提 当前Windows电脑下已经安装了一个python3.11&#xff0c;现在需要安装一个python3.9。下载地址&#xff1a;Python Releases for Windows | Python.org 2、步骤 找到对应的版本&#xff0c;并下载安装包。下载后&#xff0c;打开安装包。按图片勾选&#xff0c;点击n…

【网络安全自学宝典】从零开始自学网络安全,按照这个路线就可以了

前景 很多零基础朋友开始将网络安全作为发展的大方向&#xff0c;的确&#xff0c;现如今网络安全已经成为了一个新的就业风口&#xff0c;不仅大学里开设相关学科&#xff0c;连市场上也开始大量招人。那么网络安全到底前景如何&#xff1f;大致从市场规模、政策扶持、就业方…

共赴华为全联接大会2023,新点软件携手加速数字政府建设

数字技术使能&#xff0c;加速行业智能化。9月20—22日&#xff0c;华为全联接大会2023在上海拉开序幕&#xff0c;来自全球ICT产业的业界思想领袖、商业精英、技术专家、先锋企业、生态合作伙伴、应用服务商以及开发者共襄盛会&#xff0c;共同探讨行业智能化的未来路径。 作…

【c语言】详解动态内存管理

目录 关于动态内存分配malloc和calloc函数介绍动态内存回收----freerealloc函数介绍常见的动态内存错误 关于动态内存分配 回想一下我们之前学过的内存开辟方式&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间在学…

Windows系统ping命令的c++实现

// ping.cpp : 定义控制台应用程序的入口点。 //#include <winsock2.h> #include <stdio.h> #include <stdlib.h> #define ICMP_ECHO 8 #define ICMP_ECHOREPLY 0 /* The IP header */ typedef struct iphdr { unsigned char h_len:4; // length of the…

什么是内容运营?

关于内容运营&#xff0c;在不同种类的公司&#xff0c;侧重点也不一样。 电商平台的内容运营岗更偏内容营销&#xff1b;产品功能比较简单的公司&#xff0c;内容运营和新媒体运营的岗位职责差不多&#xff1b;而内容平台的内容运营更多的是做内容的管理和资源整合。