社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
分组密码是将明文数字序列按照固定长度分组,并且用同一个密钥和同一个加密算法逐组加密,从而将各个明文分组变换成为密文分组的密码。
(1)混乱原则:使得密文和对应明文和密钥之间的关系足够复杂,以至于密码分析者无法利用这种关系。
(2)扩散原则:使得每一个明文bit和密钥bit影响尽可能多的密文bit,用来隐藏明文的统计特性和结构规律。
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
备注:DES加密算法大致包含初始(终止)置换+扩展置换+S盒压缩三个部分,下面将从详细讲解这三个部分。
先看看一下初始置换过程图
首先看一下初始置换表(8*8 64bit),第一位是58,,58表示输入的第58位换到第一位,第二位是50,50表示输入的第50位换到第二位,以此类推。原始数据经过初始置换表的置换,就会得到置换后的表格。
终止置换和初始置换是互逆的过程,即经过一次初始置换和一次终止置换,64位的二进制数据会别还原。
下面我们来做个例题巩固一下:
题目:当输入一个十六进制数,写出其终止置换输出
0x 0000 0080 0000 0002(十六进制)
解答:
先将输入的十六进制转化为二进制数及终止置换表如下图所示
我们可以看到,输入表中第25位和第63位是1,其余为0,所以重点考虑这两个位置即可,看终止置换表 第一个数字40表示,输入的第40个二进制数换在第一个位置,同理,第15个数字是63表示输入的第63个二进制数换在第15个位置,第64个位置是25,表示第25个输入的二进制数换在第64个位置。则可以得到经终止置换表置换后的64位数据为
转化为16进制为 0x 0002 0000 0000 0001 即为终止置换最后输出。
经过初始置换的64bit数据分成两个部分,左侧32bit,右侧32bit 。其中一边32bit扩展为48bit数据,其实就是在某些位置添位操作。
同初始(终止)置换表一样,扩展置换也有一个扩展置换表,首先看一下扩展置换表
我们假设原始数据就是上面1101 0001 0011 0100 0010 0011 0011 1011的32bit数据,我们需要将其分为8组,每一组有4个元素,我们扩展就是将4个元素组扩展成为6个元素组,这样就完成了32到48位的转换。
经过一下步骤:
这样就完成了从32bit到48bit的扩展置换过程。
例如:假设48位数据输入,分成8组,每组有6位
111111 100101 110011 001100 011001 010111 111011 011000
以第一组为例子 111111
原始数据:111111
以上过程完成了从6位数据转化为4位数据的压缩,其他各组方法一致。
P盒置换是对S盒置换后的32bit数据的位置进行移动。
原理同初始置换,经过这个P盒置换之后,就会得到一轮运算中的最后输出。
撒花✿✿ヽ(°▽°)ノ✿!!!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!