详解 DES加密技术 | 凯撒密码 | 栅栏密码

news2024/11/29 22:42:46

目录

密码学

恺撒密码

栅栏密码

消息和加密

密码的三个特性

算法和密钥

对称算法

公开密钥算法

DES对称加密技术

DES算法的安全性

DES算法的原理

DES算法的实现步骤

IP置换表和IP-1逆置换表

 函数f

子密钥ki

S盒的工作原理

DES算法的应用误区


密码学

        密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。长期以来,只在很小的范围内使用,如军事、外交、情报等部门。计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。 随着计算机网络和计算机通讯技术的发展,计算机密码学得到前所未有的重视并迅速普及和发展起来。在国外,它已成为计算机安全主要的研究方向。

        密码学的历史比较悠久,在四千年前,古埃及人就开始使用密码来保密传递消息。 两千多年前,罗马国王Julius Caesare(恺撒)就开始使用目前称为“恺撒密码”的密码系统。但是密码技术直到本20世纪40年代以后才有重大突破和发展。 特别是20世纪70年代后期,由于计算机、电子通信的广泛使用,现代密码学得到了空前的发展。

恺撒密码

        恺撒密码是一种简单的移位密码,它把字母表中的每个字母用该字母后面的第三个字母来代替。例如“a”将变成“D”,“b”将变成“E”,“c”将变成“F”等。在字母表的最后,移位将重新折回,形成一个循环,“x”将变成“A”,“y”将变成“B”,“z”将变成“C”。能够列出所有可能性定义如下所示的变换:

明码字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密码字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

明文:veni,vidi,vjdj,vici

密文:yhql,ylgl,ymgm,ylfl

        现在,为每个字母分配一个数值(如a=0、b=1等),对每个明文字母p,用密文字母C代替,则恺撒密码的加密算法可表示为:

C=E(p)=(p+3)mod 26

p=D(C)=(C-3)mod 26

栅栏密码

        栅栏密码:栅栏密码的加密变换规则是首先将明文分成n个字符一栏,一栏为一行构成一个行列式;然后行列式行列转置后按列上下排列字符生成密文。 将n=2的栅栏密码称为2栏栅栏密码,要求明文去除空格后长度为偶数。

【例】 p1=there is a cipher,使用2栏栅栏密码加密,求c1

  • 去空格,p1=thereisacipher
  • 2个字符一栏,th,er,ei,sa,ci,ph,er
  • 生成行列式:    ,矩阵行列转置得
  • 合并,c1=teescpehriaihr。分出空格, c1=teesc pe h riaihr

消息和加密

        遵循国际命名标准,加密和解密可以翻译成:“Encipher(译成密码)”和“(Decipher)(解译密码)”。也可以这样命名:“Encrypt(加密)”和“Decrypt(解密)”。 消息被称为明文(plainText)。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密,如图表明了加密和解密的过程

        明文用M(Message,消息)或P(Plaintext,明文)表示,它可能是比特流、文本文件、位图、数字化的语音流或者数字化的视频图像等

        密文用C(Cipher)表示,也是二进制数据,有时和M一样大,有时稍大。通过压缩和加密的结合,C有可能比P小些

        加密函数E作用于M得到密文C,用数学公式表示为:E(M)=C。解密函数D作用于C产生M,用数据公式表示为:D(C)=M。先加密后再解密消息,原始的明文将恢复出来,D(E(M))=M必须成立

密码的三个特性

  • 鉴别:消息的接收者应该能够确认消息的来源,入侵者不可能伪装成他人
  • 完整性:消息的接收者应该能够验证在传送过程中消息没有被修改,入侵者不可能用假消息代替合法消息
  • 抗抵赖性:发送消息者事后不可能虚假地否认他发送的消息

算法和密钥

        算法也叫密码函数,是用于加密和解密的数学函数。通常情况下,有两个相关的函数,分别用作加密/解密。 若算法本身保密,称之为受限制的算法 受限制算法存在一定的缺陷,只有在低密级的应用中,具有一定的价值。

        现代密码学用密钥解决了这个问题,密钥用K(Key)表示。K可以是很多数值里的任意值,密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥,即运算都依赖于密钥,并用K作为下标表示,加解密函数表达为:

如图所示

        有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下,加密和解密的函数表达式为:

函数必须具有的特性是,DK2(EK1(M))=M,如图所示

对称算法

        基于密钥的算法通常有两类:对称算法和公开密钥算法(非对称算法)。对称算法有时又叫传统密码算法,加密密钥能够从解密密钥中推算出来,反过来也成立。 在大多数对称算法中,加解密的密钥是相同的。对称算法要求发送者和接收者在安全通信之前,协商一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。对称算法的加密和解密表示为:

对称密钥算法可以分为两类:序列算法和分组算法

  • 一次只对明文中的单个比特或者字节进行运算的算法称为序列算法或者序列密码
  • 另一类算法是对明文的一组比特或者字节进行运算,称为分组算法或者分组密码

公开密钥算法

        公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算出来,之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)

DES对称加密技术

        DES(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。 美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告,提出了四点具体的要求:

  • 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改
  • 具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握
  • DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础
  • 实现经济,运行有效,并且适用于多种完全不同的应用

DES算法的安全性

        DES算法正式公开发表以后,引起了一场激烈的争论。1977年Diffie和Hellman提出了制造一个每秒能测试106个密钥的大规模芯片,这种芯片的机器大约一天就可以搜索DES算法的整个密钥空间,制造这样的机器需要两千万美元。

        1993年R.Session和M.Wiener给出了一个非常详细的密钥搜索机器的设计方案,它基于并行的密钥搜索芯片,此芯片每秒测试5×107个密钥,当时这种芯片的造价是10.5美元,5760个这样的芯片组成的系统需要10万美元,这一系统平均1.5天即可找到密钥,如果利用10个这样的系统,费用是100万美元,但搜索时间可以降到2.5小时。可见这种机制是不安全的。

        1997年1月28日,美国的RSA数据安全公司在互联网上开展了一项名为“密钥挑战”的竞赛,悬赏一万美元,破解一段用56比特密钥加密的DES密文。

        计划公布后引起了网络用户的强力响应。一位名叫Rocke Verser的程序员设计了一个可以通过互联网分段运行的密钥穷举搜索程序,组织实施了一个称为DESHALL的搜索行动,成千上万的志愿者加入到计划中。

        在计划实施的第96天,即挑战赛计划公布的第140天,1997年6月17日晚上10点39分,美国盐湖城Inetz公司的职员Michael Sanders成功地找到了密钥,在计算机上显示了明文:“The unknown message is: Strong cryptography makes the world a safer place”。

        由此可见,DES的56位短密钥面临着Internet超级计算能力的挑战。 Internet仅仅应用了闲散的资源,就可以破解DES的密码,这是对密码方法的挑战,也是Internet超级计算能力的显示。 尽管DES存在着不足,但是作为第一个公开密码算法的密码体制,它成功的完成了自己的使命,在密码学历史上具有重要的地位。

DES算法的原理

        DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式有两种:加密或解密

        DES算法的工作方式:如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果

        在通信网络的两端,双方约定一致的Key 在通信的源点用Key进行DES加密,以密文的形式在公共通信网中传输密文,在通信的接收端用Key进行DES解密 ,这样就保证了核心数据(例如PIN,MAC等)在公共通信网中传输的安全性可靠性 定期更换Key,能进一步提高数据保密性,这是目前金融交易网络的流行做法

DES算法的实现步骤

第一步:变换明文。对给定的64位的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32位,R0表示x0的后32位。

第二步:按照规则迭代,规则为:

第三步:对L16R16利用IP-1作逆置换,就得到了密文y,加密过程如图所示:

从图中可以看出,DES加密需要四个关键点:

  • IP置换表和IP-1逆置换表
  • 函数f
  • 子密钥Ki
  • S盒的工作原理

IP置换表和IP-1逆置换表

        输入的64位数据按置换IP表进行重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换IP表如表所示

        将输入64位比特的第58位换到第一位,第50位换到第二位,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。比如:置换前的输入值为D1D2D3…D64,则经过初始置换后的结果为:L0=D58D50...D8,R0=D57D49...D7

        经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换IP-1,又将第40位换回到第1位,其逆置换IP-1规则表所示

 函数f

函数f有两个输入:32位的Ri-1和48位Ki,f函数的处理流程如图所示

E变换的算法是从Ri-1的32位中选取某些位,构成48位。即E将32比特扩展变换为48位,变换规则根据E位选择表,如表所示

Ki是由密钥产生的48位比特串,具体的算法下面介绍。将E的选位结果与Ki作异或操作,得到一个48位输出。分成8组,每组6位,作为8个S盒的输入

每个S盒输出4位,共32位,S盒的工作原理将在第四步介绍。S盒的输出作为P变换的输入,P的功能是对输入进行置换,P换位表如表所示

子密钥ki

假设密钥为K,长度为64位,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。K的下标i的取值范围是1到16,用16轮来构造。构造过程如图所示

首先,对于给定的密钥K,应用PC1变换进行选位,选定后的结果是56位,设其前28位为C0,后28位为D0。PC1选位如表所示

第一轮:对C0作左移LS1得到C1,对D0作左移LS1得到D1,对C1D1应用PC2进行选位,得到K1。其中LS1是左移的位数,如表所示

表中的第一列是LS1,第二列是LS2,以此类推。左移的原理是所有二进位向左移动,原来最右边的比特位移动到最左边。其中PC2如表9-7所示。(56位转换为48位,该48位二进制字符串即为K1)

第二轮:对C1,D1作左移LS2得到C2和D2,进一步对C2D2应用PC2进行选位,得到K2。如此继续,分别得到K3,K4…K16

S盒的工作原理

        S盒以6位作为输入,而以4位作为输出,现在以S1为例说明其过程。假设输入为A=a1a2a3a4a5a6,则a2a3a4a5所代表的数是0到15之间的一个数,记为:k=a2a3a4a5;由a1a6所代表的数是0到3间的一个数,记为h= a1a6

        在S盒中的S1的h行,k列找到一个数B,B在0到15之间,它可以用4位二进制表示,为B=b1b2b3b4,这就是S1的输出。

DES算法的应用误区

        DES算法具有比较高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。 56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的, 当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。

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

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

相关文章

Oracle (7)Online Redo Log Files

目录 一、Oracle Online Redo Log Files及其相关内容介绍 1、Online Redo Log Files简介 2、Online Redo Log Files特点 3、Online Redo Log Files文件组 4、多路复用文件 5、联机重做日志文件工作方式 6、LGWR什么时候写重做 7、LS和LSN 8、删除Redo文件成员 9、删除…

【黑马程序员】mysql基础篇笔记

2023年10月26日12:21:09过一下 1.01.MySQL课程介绍(Av765670802,P1) 2.02. 基础-课程内容&数据库相关概念(Av765670802,P2) 3.03. 基础-概述-MySQL安装及启动(Av765670802,P3) 4.04. 基础-概述-数据模型(Av765670802,P4) 通过表来存储数据的数据库就叫做关系型数据库 …

centos7安装配置以及Linux常用命令

⭐⭐ linux专栏:linux专栏 ⭐⭐ 个人主页:个人主页 目录 一.CentOS的安装 使用vi编辑ifcfg-ens33 二. 下载MobaXterm软件 2.1MobaXterm的用途 2.2 MobaXterm的使用 2.3下载插件vim 三.Linux常用命令 3.4 vi或vim编辑器 3.4.1 命令模式 3.4.2.…

面试官:给你40亿个数,你应该如何快速判断一个数是否在这40亿个数中?—— 位图 [ C++入门 ]

阅读导航 引言一、位图的概念1. 官方文档2. 基本概念 二、位图的实现1. 插入2. 删除3. 查找C模拟实现🔴完整代码 总结 引言 在C编程中,位图是一种常用的数据结构,用于高效地表示大量的布尔值。它通过使用一个二进制位来表示每个元素的存在与…

集成电路自动化测试的优势是什么?

集成电路自动化测试的优势主要包括: 提高效率:自动化测试可以显著提高测试效率,因为可以24小时不间断地进行测试,同时避免了人工测试中的误差和疏漏,节省了大量时间和人力成本。 提升精度:自动化测试的精…

MySQL|基础操作+8大查询方式汇总

MySQL操作 一、操作数据库 MySQL中可以创建多个数据库用于存储不同场景的表结构,学习MySQL之前,我们要先理清如下的关系: 数据库 --> 数据表 --> 字段 抛开数据库存储上限去考虑,每个数据库中可以包含无数个数据表&#xf…

Apriori介绍及代码批注

一、Apriori原理解析 1. 概述 关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找到各项之间的关联关系,而这种关系并没有在数据中直接体现出来。以超市的销售数据为例,当存在很多商品时,可能的商品组合数量…

MySQL的数据库操作、数据类型、表操作

目录 一、数据库操作 (1)、显示数据库 (2)、创建数据库 (3)、删除数据库 (4)、使用数据库 二、常用数据类型 (1)、数值类型 (2&#xff0…

用Jmeter做微信小程序项目接口测试【案例】

公司新项目组开发一款微信小程序电商平台,为了更好保证产品质量,因此提出了需要进行接口测试。 从接口本身来讲,对其测试与其他项目应该是一样的。所以不难理解,我们要对小程序的接口测试需要准备的 材料有: 1、完备…

LCR 158. 库存管理 II 哈希 / 摩尔投票法

LCR 158. 库存管理 II - 力扣(LeetCode) 仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id。 (1)方法一:先排序 题目…

​Profinet转EtherNET/IP从站连接欧姆龙plc与西门子200smart通讯的配置方法​

本案例是200smart plc与欧姆龙plc进行通讯的方法,远创智控YC-PNM-EIP网关可以读写全系列西门子 PLC 数据。一般不需要 PLC 里做特殊的设置。只需要把 PLC 的变量地址配置到网关中,网关就可以读取指定地址的数据或者写数据到指定的地址。 PLC 通过网线连接…

Android---Bitmap详解

每一个 Android App 中都会使用到 Bitmap,它也是程序中内存消耗的大户,当 Bitmap 使用内存超过可用空间,则会报 OOM。 Bitmap 占用内存分析 Bitmap 用来描述一张图片的长、宽、颜色等信息,可用使用 BitmapFactory 来将某一路径下…

浮点数在计算机中的二进制表示

文章目录 Part.I IntroductionPart.II 原理Part.III 代码验证Reference Part.I Introduction 首先要了解一下下面的知识: 1 位有两种状态:0 或 11 字节(byte) 8 位(bit) 2 7 128 2^7128 27128&#xff1…

rhcsa简单的查询命令

时间 date -s "20021125 12:00:00" date 052312002002 一.简单语法 hwclock --查看硬件时间 hwclock --show 查看硬件时间 hwclock -w 同步硬件时间和系统时间 hwclock -s 将硬件时钟同步到系统时间 hwclock -r 查看当前时间 cal 查看当前月份日历 cal 10 …

nodejs+vue+elementui+express基于体质分析的个性化健身方案生成系统与设计

基于体质分析的个性化健身方案生成系统与设计 客户端: 1、在健身系统中可以自己选择课程(需先充值,金额大于课程价格才可购买,否则提示余额不足,请充值),完成课程后由该课程的发布教练评价评分…

Python文件——使用Python读取txt文件

作者:Insist-- 个人主页:insist--个人主页 本文专栏:Python专栏 专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注. 目录 一、文件的编码 1. 什么是编码 2. 常见的编码 二、P…

【软考】10.2 贪心法/回溯法/数据挖掘/智能优化

《贪心法》 适用于局部最优解 典型应用:背包问题 最有可能得到全局最优解:最大单位重量价值 ——> 重量 / 价值 《回溯法》 系统地搜索一个问题的所有解或者任一解深度优先,从根节点出发适用于解决迷宫类的问题 0-1背包算法的时间复杂度…

Python接口自动化之接口依赖!

以下主要介绍如何提取token、将token作为类属性全局调用及充值接口如何携带token进行请求。 一、场景说明 在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖? 在此之前我们介绍过…

预训练机器阅读理解模型:对齐生成式预训练与判别式下游场景

©PaperWeekly 原创 作者 | 徐蔚文,李昕,邴立东等 单位 | 阿里巴巴达摩院 论文链接: https://arxiv.org/pdf/2212.04755.pdf 收录会议: NeurIPS 2023 论文链接: https://aclanthology.org/2023.acl-short.131.p…

038-第三代软件开发-简易视频播放器-自定义Slider (二)

第三代软件开发-简易视频播放器-自定义Slider (二) 文章目录 第三代软件开发-简易视频播放器-自定义Slider (二)项目介绍简易视频播放器自定义Slider (二)横向纵向 关键字: Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&…