当前位置:文档之家› 409 分组密码--AES算法

409 分组密码--AES算法

AES密码算法

本次课的主要内容

?AES算法概述

?AES算法加密过程

状态

S盒变换ByteSub

行移位变换ShiftRow

列混合变换MixColumn

轮密钥加变换AddRoundKey ?AES算法解密过程与安全性

一般的轮数:

行移位变换ShiftRow

列混合变换MixColumn

轮密钥加变换AddRoundKey 最后一轮:

S盒变换ByteSub

行移位变换ShiftRow

轮密钥加变换AddRoundKey

1、AES的数据处理方式

①字节、字

②状态

2、状态

①加解密过程中的中间数据

②以字节为元素的4行Nb列的矩阵,或者二为数组。

③符号:Nb—明文数据长度;

数据块长度除以32,如128/32、192/32=6、256/32=8 Nk---密钥数据长度,同Nb

Nr—迭代圈数

Nb、Nk、Nr之间的关系:

2、S盒变换ByteSub(State)

①S盒变换是AES的唯一的非线性变换,是AES安全的关键。

②AES使用16个相同的S盒; DES使用8个不相同的S盒。

③AES的的S8位输入8位输出;DES的S盒有6位输入4位输出

例如:输入95,通过S盒变换,输出为2a

输出:

“00101010”,十六进制表示为“2a”

①行移位变换对状态的行进行循环移位。

②第0行不移位;第1行移C1字节,第2行移C2字节;第3行移C3字节。

③C1、C2、C3按表取值

①列混合变换把状态的列视为GF(28)上的多项上的多项式a(x),乘以一个固定的多项式c(x),并模x 4+1

b(x)=a(x)c(x) mod x 4

+1,其中c(x)=03x

3+01x 2+01x+02②列混合变换属于代替变换。写成矩阵形式

结果如下:

①把圈密钥与状态进行2相加

②圈密钥根据密钥产生算法产

③圈密钥长度等于数据块长度

①轮密钥根据密钥产生算法,通过用户密钥得到轮密钥。②密钥产生分两步进行:密钥扩展和轮密钥选择③密钥扩展将用户密钥扩展为一个扩展密钥。④密钥选择从扩展密钥中选出圈密钥。

1、密钥扩展①密钥扩展产生扩展。②用一个字元素的一维数组W[Nb*(Nr+1)] 表示扩展密钥。③用户密钥放在数组最开始

的Nk 个字中。④其它的字由它前面的字经过处理后得到⑤有Nk≤6和Nk >6 两种密钥扩展算法。

2、密钥选择圈密钥选择根据分组的大小,依次从扩展密钥中取出圈密钥。

第一步和最后一步都用了轮密钥加,因为任何没有密钥参与的变换都是容易被攻破。

DES的IP与IP-1都没有密钥参与。

AES的加密算法不是对合运算,加密算法和解密算法不同。

AES的巧妙之处:虽然解密算法与加密算法不同,但算解密算法的结构与加密算法的结构相同

把加密算法的基本过程变换成逆变换 便得到解密算法。

AES算法的解密过程依次进行逆字节代换,逆行移位,逆列混合和轮

密钥加。

?InvByteSub ( )是ByteSub( )的逆变换,通过查逆S盒来实现。

?InvShiftRow( )是ShiftRow( )的逆变换,对State的各行进行一定量的循环移位(Nb=4)。第0行不移位;第1行循环右移1个字节;第2行循环右移2个字节;第3行循环右移3个字节。

?InvMixColumn( )是MixColumn( )的逆变换。

?AddRoundKey的逆就是它自己

?圈密钥按相反顺序使用

可抗击穷举密钥的攻击

可抵抗穷举搜索攻击因为AES的密钥长度可变,针对128/192/256bit的密钥,密钥量为2128/2192/2256,足以抵抗穷举搜索攻击。

可抗击线性攻击,经4轮变换后,线性分析就无能为力了。

可抗击差分攻击,经8轮变换后,差分攻击就无从着手了。

不存在弱密码

该算法对密钥的选择没有任何限制,还没有发现弱密钥

?AES算法概述

?AES算法加密过程

状态

S盒变换ByteSub

行移位变换ShiftRow

列混合变换MixColumn

轮密钥加变换AddRoundKey ?AES算法解密过程与安全性

谢谢大家

分组密码算法

实验二分组密码算法DES 一、实验目的 通过用DES算法对实际的数据进行加密和解密来深刻了解DES的运行原理。 二、实验原理 分组密码是一种对称密码体制,其特点是在明文加密和密文解密的过程中,信息都是按照固定长度分组后进行处理的。在分组密码的发展历史中,曾出现了许多优秀的算法,包括DES,IDEA,AES,Safer++等等。下面以DES算法为例介绍分组密码算法的实现机制。 DES算法将明文分成64位大小的众多数据块,即分组长度为64位。同时用56位密钥对64位明文信息加密,最终形成64位的密文。如果明文长度不足64位,即将其扩展为64位(如补零等方法)。具体加密过程首先是将输入的数据进行初始置换(IP),即将明文M中数据的排列顺序按一定的规则重新排列,生成新的数据序列,以打乱原来的次序。然后将变换后的数据平分成左右两部分,左边记为L0,右边记为R0,然后对R0实行在子密钥(由加密密钥产生)控制下的变换f,结果记为f(R0,K1),再与L0做逐位异或运算,其结果记为R1,R0则作为下一轮的L1。如此循环16轮,最后得到L16、R16,再对L16、R16实行逆初始置换IP-1,即可得到加密数据。解密过程与此类似,不同之处仅在于子密钥的使用顺序正好相反。DES全部16轮的加密过程如图1-1所示。 DES的加密算法包括3个基本函数: 1.初始置换IP 它的作用是把输入的64位数据块的排列顺序打乱,每位数据按照下面的置换规则重新排列,即将第58位换到第一位,第50位换打第2位,…,依次类推。置换后的64位输出分为L0、R0(左、右)两部分,每部分分别为32位。 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 1

信息安全技术 分组密码算法的工作模式 编制说明

国家标准《信息安全技术分组密码算法的工作模式》 (征求意见稿)编制说明 一、工作简况 1、任务来源 本标准由国家标准化管理委员会下达的国家标准编制计划,项目名称为《信息安全技术分组密码算法的工作模式》(国标计划号:),项目类型为标准修订,项目所属工作组为WG3工作组,项目牵头单位为成都卫士通信息产业股份有限公司。 2、主要起草单位和工作组成员 该标准由成都卫士通信息产业股份有限公司主要负责起草,中国科学院软件研究所、中国科学院数据与通信保护研究教育中心、国家密码管理局商用密码检测中心、格尔软件股份有限公司、西安西电捷通无线网络通信股份有限公司、上海信息安全工程技术研究中心、……共同参与了该标准的起草工作。主要起草人有:张立廷,眭晗,涂彬彬,王鹏,毛颖颖,郑强,张国强,徐明翼,罗俊。 3、主要工作过程 2019年4月之前,编制团队分析GB/T 17964-2008标准文本及理论研究、行业应用情况,认为有必要修订该标准,原因如下: 1)学术界持续分析研究工作模式,产生了新的成果;产业界广泛应用工作模式,积攒了新的应用经验;有必要收集归纳。 2)现有标准文本未列举国家标准分组密码算法对应的测试向量,数据加密厂商、相关管理部门缺乏具体的参考数据。 3)产业界对现有标准之外的部分工作模式存在着强烈的应用需求,如磁盘加密模式XTS等,有必要评估引进的可行性。 4)国家标准化推进过程中,产生了与本标准相关的一些标准,如GB/T 36624-2018 《信息技术安全技术可鉴别的加密机制》,有必要在修订版本中做出协调性说明。 2019年4月,全国信息安全标准化技术委员会(以下简称“信安标委”)2019年第一次工作组会议周,在WG3工作组会议上,编制团队向专家和工作组成员单位汇报了《信息安全技术分组密码算法的工作模式》(投票草案稿)修订情况,

SM4算法、AES算法、DES算法三种分组密码的基础分析

SM4算法、AES算法、DES算法三种分组密码的基础分析  分组密码当中代表性的SM4算法、AES算法、DES算法在计算机和通信系统中起着重要的实际作用,每一种的算法都会有其独有的一份结构,讲解起来其实每一种都有很大的一个篇幅。在这里主要是把这几种密码算法放在一起做一个简单的分析,也可以通过了解每一种算法来比较一下三者之间的差别。 那么,我们就通过了解SM4算法、AES算法、DES算法这几种有代表性的近代分组密码来讨论一下分组密码的基本理论及其在计算机和通信系统中的实际应用。 1、SM4算法 SM4密码算法是一个分组算法,其算法设计简沽,结构有特点,安全高效。数据分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法均采取32轮迭代结构。SM4密码算法以字节8位和字节32位作为单位进行数据处理。SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 SM4密码算法结构 SM4算法的基本内容有以下几方面: 基本运算:SM4密码算法使用模2加和循环移位作为基本运算。 基本密码部件:SM4密码算法使用了S盒、非线性变换τ、线性变换部件L、合成变换T基本密码部件。 轮函数:SM4密码算法采用对基本轮函数进行迭代的结构。利用上述基本密码部件,便可构成轮函数。SM4密码算法的轮函数是一种以字为处理单位的密码函数。 加密算法:SM4密码算法是一个分组算法。数据分组长度为128比特,密钥长度为128比特。加密算法采用32轮迭代结构,每轮使用一个轮密钥。 解密算法:SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密铝的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 密钥扩展算法:SM4密码算法使用128位的加密密钥,并采用32轮法代加密结构,每一轮加密使用一个32位的轮密钥,共使用32个轮密钥。因此需要使用密钥扩展算法,从加密密钥产生出32个轮密钥。 SM4的安全性:SM4密码算法经过我国专业密码机构的充分分析测试,可以抵抗差分攻击、线性攻击等现有攻击,因此是安全的。 2、AES算法 2000年10月2日美国政府正式宣布选中比利时密码学家JoanDaemen和VincentRijmen提出的一种密码算法RJNDAEL作为AES,目前AES己经被一些国际标准化组织ISO,IETF,IEEE802.11等采纳作为标准。RIJNDAEL算法之所以能够最终被选为AES的原因是其安全、性能好、效率高、实用、灵活。RIJNDAEL算法是一个数据块长度和密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于256位的32位的任意倍数。 RIJNDAEL算法结构图 AES算法的基本内容有以下几方面: 状态:在RIJNDAEL算法中,加解密要经过多次数据变换操作,每一次变换操作产生一个中间结果,称这个中间结果叫做状态。各种不向的密码变换都是对状态进行的。 轮函数:RIJNDAEL加密算法的轮函数采用代替置换网络结构SP结构,由S盒变换ByteSub、行移位变换ShiftRow、列混合变换MixColumn、圈密钥加变换AddRoundKey组成。 圈密钥产生算法:圈密钥根据圈密钥产生算法由用户密钥产生得到,圈密钥产生分两步进行:密钥扩展和圈密钥选择。 加密算法:RIJNDAEL加密算法由一个初始圈密钥加、Nr-l圈的标准轮函数、最后一圈的非标准轮函数组成。 解密算法:RIJNDAEL算法不是对合运算,因此RIJNDAEL的解密算法与加密算法不同。由于RIJNDAEL设计得非常巧妙,使得我们只要略稍改变一下密钥扩展策略,便可以得到等价的解密算法,等价解密算法的结构与加密算法的结构相同,从而方便了工程实现。等价解密算法中的变换为加密算法中相应变换的逆变换。 RIJNDEAEL的安全性:RIJNDEAEL算法的安全设计策略是宽轨迹策略WideTrai1Strategy,具有很高的安全性,能有效抵抗自前己知的攻击,如线性攻击、插值攻击、差分攻击和相关密钥攻击等。RIJNDEAEL的数据块长度和密钥长度都可变,因此能够适应不同的安全应用环境。 3、DES算法

分组密码加密

实习二分组密码加密 一、实习目的 1.理解对称加密算法的原理,熟悉常用的对称加密算法:DES、TripleDES、Blowfish; 2.以DES加密算法为例,掌握分组加密算法加、解密过程的实现。 二、实习要求 1.实习前认真预习第5章有关内容; 2.熟悉java中的java.security.*和java.crypto.*中的相关类; 3.按要求认真撰写实习报告。 三、实习内容 1.[基本要求] 以DES/DESede为例,利用java中的相关类实现对指定字符串的加、解密。 2.[实现提示] (1) 可以利用java中的KeyGenerator类创建对称秘钥,利用工厂类KeyGenerator 的静态方法getInstance()获得KeyGenerator()类对象; (2) 方法getInstance()的参数为字符串类型,指定加密算法的名称如:Blowfish、DES、DESede、HmacMD5或HmacSHA1等; (3) 利用工厂类Cipher的对象可以创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。 实验截图: 以DES加密为例,客户端:

客户端解密: 实习代码: 服务器MyServer类: package Caesar_Modification; import java.awt.EventQueue; import java.awt.TextArea; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.swing.JFrame;

实现DES 分组密码算法的加解密

实验报告 课程:密码学班级:姓名:学号: 成绩:指导教师:实验日期:2011/5/25 实验密级:预习程度:实验时间:12:50-15:20 仪器组次:18 必修/选修:必修实验序号:4 实验名称:实现DES 分组密码算法的加解密 实验目的与要求:1、掌握DES 分组密码算法的软件实现方法; 2、复习DES 分组密码算法设计的基本原理; 3、能用DES 分组密码算法实现已知明文的加解密实验仪器: 一、实验要求 1、求主密钥的扩展密钥前,先输出使用的PC-1 置换和PC-2 置换;

2、对明/密文文件用DES 算法进行加/解密前,先输出确定使用的S 盒和有关置换表; 3、“确定主密钥的扩展密钥”和“对明/密文文件的加/解密”分别编写两个模块,如果时 间不够,可以任选一个模块; 4、确定扩展密钥前,先指出是加密密钥还是解密密钥; 5、密钥扩展的移位的位数可以先添表,但最后一轮移位完后,必须回到初始值c0d0。 6、主密钥长度与明文相一致,需要忽略校验位; 7、能完成任意给定的一个明/密文文件的加/解密; 8、加解密结果正确。 二、实验内容与步骤 下面是程序的部分代码 int main() { char MingWen[104]; char target[8]; char InputKey[8]; int text[64]; int text_ip[64]; int L0[32],Li[32]; int R0[32],Ri[32]; int RE0[48]; int key[64]; int keyPC1[56]; int A[28]; int B[28]; int keyAB[56]; int K[16][48]; int RK[48]; int RKS[8]; int SP[32]; int RKSP[32]; int text_end[64]; int text_out[14][64]; char init[9]={"HTmadeit"}; int CBC[64]; int result[13][64]; int H[208]; char MiWen[208]; int C[832]; int M[13][8]; char choice; int t; int i,j; int k,l,m,n; int r[8],c[8];

兄弟连教育区块链的信息安全(5) 对称加密算法的分组模式及其Go语言实现

兄弟连教育区块链的信息安全(5) 对称加密算法的分组模式及其Go语言实现 # 对称加密算法的分组模式及其Go语言实现 之前介绍的DES、3DES、AES加密算法,只能加密固定长度的明文。如果需要加密任意长度的明文,需要对明文分组加密。 DES、3DES、AES等又称分组密码,而分组有很多模式,如:ECB模式、CBC模式、CFB模式、OFB模式、CTR模式,如下将逐一介绍。 ## ECB模式 ECB模式,全称Electronic Codebook模式,译为电子密码本模式,即用相同的密码分别对明文分组独立加密。 ECB模式是最简单的模式,因为相同的明文分组会加密为相同的密文分组,因此存在一定风险。 如下为ECB模式示意图: 另外当最后一个明文分组的内容,小于分组长度时,需要用特定的数据进行填充。 ## CBC模式 CBC模式,全称Cipher Block Chaining模式,译为密文分组链接模式,即加密算法的输入是上一个密文分组和下一个明文分组的异或。 因为是将上一个密文分组和下一个明文分组的内容混合加密,因此可以避免ECB模式的缺陷。 当加密第一个明文分组时,由于不存在上一个密文分组,因此需要准备与分组等长的初始化向量IV,来代替上一个密文分组。

如下为CBC模式示意图: go标准库中CBC模式代码如下: ```go type cbc struct { //b为加密算法,如DES、AES b Block //加密算法支持的明文分组长度 blockSize int //初始化向量IV iv []byte //临时变量 tmp []byte } type cbcEncrypter cbc //指定加密算法和IV func NewCBCEncrypter(b Block, iv []byte) BlockMode { if len(iv) != b.BlockSize() { panic("cipher.NewCBCEncrypter: IV length must equal block size ") } if cbc, ok := b.(cbcEncAble); ok { return cbc.NewCBCEncrypter(iv) } return (*cbcEncrypter)(newCBC(b, iv)) } //加密 func (x *cbcEncrypter) CryptBlocks(dst, src []byte) { if len(src)%x.blockSize != 0 { panic("crypto/cipher: input not full blocks")

计算机安全其他常用分组密码算法

3.2.5其他常用分组密码算法 1. 三重DES 三重DES (即Triple DES )是DES 向AES 过渡的加密算法(1999年,NIST 将3-DES 指定为过渡的加密标准),是DES 的一个更安全变形。它以DES 为基本模块,通过组合分组方法设计出分组加密算法。其具体实现如下:设E k ( )和D k ( )代表DES 算法的加密和解 密过程,K 代表DES 算法使用的密钥,P 代表明文,C 代表密文。 三重DES 加密过程为: C=E k1(D k2(E k1(P ))) 三重DES 解密过程为: P=D k1((E k2(D k1(C ))) 具体的加/解密过程如图3-22所示。 2. IDEA 加密算法 IDEA 算法是International Data Encryption Algorithmic 的缩写,意为国际数据加密算法,1992年由瑞士的Lai 和Massey 提出。 IDEA 的输入明文为64位,密钥为128位,生成的密文为64位。 密钥长度是128位,比DES 长了2倍多,所以如果用穷举强行攻击的话,需要2128 次搜索才能获得密钥。如果可以设计一种每秒能搜索十亿次的芯片,并且采用十亿个芯片来并行处理的话,也要用上1013年——比宇宙的年龄还要长。而对于其他攻击方式来说,由于此算法比较新,并且在设计时已经考虑到了如差分攻击等威胁,所以至今还未发现成功攻击IDEA 的方法。从这点来看,IDEA 还是很安全的。 3.2.6分组密码的运行模式 分组密码在加密时,明文分组的长度是固定的,而实际应用中待加密消息的数据量是不定的,数据格式可能是多种多样的。为了能在各种应用场合使用DES ,美国在FIPS PUS 74和81中定义了DES 的4种运行模式。这些模式也可用于其他分组密码,下面以DES 为例来介绍这4种模式:ECB 、CBC 、CFB 和OFB 。 1. 电子密码本模式ECB 一个明文分组加密成一个密文分组,相同的明文分组被加密成相同的密文分组。由于大多数消息并不是刚好分成64比特(或者任意分组长)的加密分组,通常需要填充最后一个分组,为了在解密后将填充位去掉,需要在最后一分组的最后一字节中填上填充长度。 ECB 模式的缺点是:如果密码分析者有很多消息的明密文对,那就可能在不知道密钥的情况下恢复出明文;更严重的问题是敌手通过重放,可以在不知道密钥情况下修改被加密过的消息,用这种办法欺骗接收者。例如在实际应用中,不同的消息可能会有一些比特序列是相同的(消息头),敌手重放消息头,修改消息体欺骗接收者。 图3.22 三重DES (a)加密过程 (b)解密过程

128位分组对称加密算法:AES

128位分组对称加密算法:AES AES是美国高级加密标准算法,将在未来几十年里代替DES在各个领域中得到广泛应用。本文在研究分析AES加密算法原理的基础上,着重说明算法的实现步骤,并结合AVR汇编语言完整地实现AES加密和解密。根据AES原理,提出几种列变化的优化算法,并根据实验结果分析和比较它们的优缺点。关键词: AES算法 DES AVR汇编语言加密算法解密算法 引言 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1]。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管人们对AES还有不同的看法,但总体来说, AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍[2]。AES算法主要包括三个方面:轮变化、圈数和密钥扩展。本文以128为例,介绍算法的基本原理;结合AVR汇编语言,实现高级数据加密算法AES。 1 AES加密、解密算法原理和AVR实现 AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Ke yexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。 1.1圈变化 AES每一个圈变换由以下三个层组成: 非线性层——进行Subbyte变换; 线行混合层——进行ShiftRow和MixColumn运算; 密钥加层——进行AddRoundKey运算。 ① Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。Schange:

分组密码与流密码的分析设计与比较

分组密码与流密码的分析设计与比较 1引言 随着科技的发展,信息安全在现代电子通信等方面发挥着越来越重要的作用密码编码学是应对各种信息安全威胁的最有效的方法。所谓密码编码学,是指生成高强度、有效的加密或认证算法。欲传送的原始信息叫做明文,对其进行可逆的数字变换后的信息称为密文。发送者通过加密算法对明文进行加密,得到密文,这个过程称为加密。接收者收到经过处理的密文后,通过解密算法,还原成明文,这一过程称为解密。 密码系统所采取的基本工作模式叫做密码体制,主要分为两大类:对称密钥密码体制与非对称密钥密码体制。对称密钥密码体制中的加密密钥与解密密钥相同,需要安全可靠的密钥传递信道,通信双方需保管好密钥。非对称密钥密码体制中加密与解密分别有一个对应的密钥,发送者查询接收者公开的公钥对明文进行加密,接收者收到密文后再利用只有自己知道的私钥进行解密。 对称密钥密码体制又分为两大类,分别是分组密码与流密码。所谓分组密码,就是按照算法设计者预先设定的长度把明文分割成块,再对每一分组进行加密解密的算法。而对

比特进行运算、采用"一次一密"的算法,则称为流密码。 2分组密码 2.1 概论 所谓分组密码,其明文分为若干个数据块,加密后得到的密文仅与给定的密钥算法和密钥有关,与被处理的明文数据块在整个明文中所处的位置无关。较典型的分组密码算法有DES算法、IDEA算法、AES算法等。 算法设计者事先设定好分块的长度,算法将明文按照该长度进行分组,再在这些定长的分组上进行运算。在分组密码的设计中,加密与解密的处理是建立在块的基础上。算法把明文分成设定的大小,通常为64 bit或128 bit,再对每个块单独编码。 2.2 设计原则 创立了经典信息论的数学家C.E.Shannon在1949年时发表了一篇名为"《保密系统的通信理论》的论文。在这篇论文中,Shannon提出了如何设计分组加密的组合密码系统。其中,设计分组密码需要依据两个一般原则,分别是混淆原则和扩散原则。 实现混淆原则,实际上就是复杂化密文的统计特性与和密钥的依赖关系。扩散原则,即所设计的密码应使得密钥的每一位数字影响密文的许多位数字以防止对密钥进行逐段破译,且明文的每一位数字也影响密文的许多位数字以隐蔽

DES分组加密实验报告详解

DES分组密码实验报告 一、DES算法的实现 1.DES简介 DES算法工作:如Mode为加密,则用Key 去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。 2. DES算法详述 (1)DES加密标准 DES是对二元数字分组加密的分组密码算法,分组长度为64比特。每64位明文加密成64位密文,没有数据压缩和扩展,密钥长度为56比特,若输入64比特,则第8,16,24,32,40,48,56,64为奇偶校验位,所以,实际密钥只有56位。DES算法完全公开,其保密性完全依赖密钥。 DES的加密过程可表示为: DES(m)= IP-1T16·T15…T2·T1·IP(m). 右图面是完全16轮DES算法框图: 图1 完全16轮DES算法

1 初始置换IP 初始置换是将输入的64位明文分为8个数组,每一组包括8位,按1至64编号。 IP的置换规则如下表: 表1 IP置换规则 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 2 IP-1是IP的逆置换 由于第1位经过初始置换后,已处于第40位。逆置换就是再将第40位换回到第1位。 逆置换规则如下表所示: 表2 IP-1置换 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 初始置换IP及其逆置换IP-1并没有密码学意义,因为置换前后的一一对应关系是已知的。它们的作用在于打乱原来输入明文的ASCⅡ码字划分的关系,并将原来明文的第m8,m16,m24,m32,m40,m48,m56,m64位(校验位)变成IP的输出的一个字节。 3. DES算法的迭代过程 图中Li-1和Ri-1分别是第i-1次迭代结果的左右两部分,各32比特。即Li=Ri-1, Ri=Li-1 f(Ri-1,ki)。其中轮密钥Ki为48比特,函数F(R,K)的计算过程如图所示。轮输入的右半部分R为32比特,R首先被扩展成48比特,扩展过程由表3定义,其中将R的16个比特各重复一次。扩展后的48比特再与子密钥Ki异或,然后再通过一个S盒,产生32比特的输出。该输出再经过一个由表4定义的置换,产生的结果即为函数F(R,K)的输出。 32 1 2 3 4 5

相关主题
文本预览
相关文档 最新文档