理解DES算法
2021-01-03 13:30
标签:相同 alt 解密 生成 算法 利用 进制 左移 压缩 首先 了解对称密码加密技术:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。但是有时候密钥不用完全相同 只要相似也可以。因为用一个密钥可以推导出另一个。 同时 DES还是分组加密。对称加密分为分组加密和序列密码。 分组密码,也叫块加密(block cyphers),一次加密明文中的一个块。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。 下面来了解DES: DES算法的主要过程: 那么首先 我们来看一下初始置换 这一部分 我们将密文按照固定的矩阵 进行位序的移动 这部分与密钥毫无关系 如上图 原本64位的58位 移动到了第一行第一列 原本的50位 移动到了一行二列 这一部分很明显是可逆的 之后我们把对来看一下密钥的操作 我们先去掉8个校验位(但是原本的序号肯定是不变的,从图中可以看出是去掉每个字节第八位) 然后再将56位换成两个28位 之后 这里的左移是二进制位运算的左移嗷 一共16轮 16轮不就生成了16个密钥嘛 两个28位左移比单纯56位左移 复杂性更高 之后 此时56位成为了48位 很多位数又没了 总的过程: 前边的这些操作都是移位 置换 没经过什么运算 现在乘机变换要真正进行加密了 经过扩展变换之后其实还有很多变换 乘积变换有点复杂 上边的可能看的有点晕 我就先大体说一下 我们首先是把初始置换(IP)的明文分成两部分 L0和R0 之后我们进行: Li = Ri-1 Ri = Li-1 异或 f(Ri-1,Ki) 一共16次迭代变换 对应1n
这样应该就能懂了 那么现在讲讲扩展变换: 其实也就是变成了 扩展变换的结果与Ki进行二进制异或运算 得到的结果再经过s盒变换 大概的规则就是这个 我们举个例子 就能看懂了 之后就要经过P盒置换 从32位线性变换为32位 这就很简单了 这时候 f(Ri-1,Ki)的结果已经出来了 我们只需要把它和Li-1异或 就得到了Ri 经过16次运算 得到了L16和R16 好了 这时候我们再将L16和R16两部分 颠倒 合并为新的64位 也就是 新的64位 是R16和L16 这个能懂吧 然后对其执行一个最终的变换 IP-1 了 其实是IP的逆矩阵哦 要用到线性代数的知识 然后我们就得到了 明文M的加密形式C 现在再来讲讲解密 因为是对称密码 所以解密就简单多了 就是一个逆过程罢了 我们加密时16轮的迭代子密钥顺序是k1到k16 我们解密是从k16到k1 同时 产生子密钥的循环移位 是右移 之后我们就总结一下DES加密的数学模型吧: 解密的数学模型: 理解DES算法 标签:相同 alt 解密 生成 算法 利用 进制 左移 压缩 原文地址:https://www.cnblogs.com/ranzhong/p/12986872.html
传统密钥算法有:DES,IDEA,TDEA,RC5等
序列密码,也叫流加密(stream cyphers),一次加密明文中的一个位。是指利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密。
解密是指用同样的密钥和密码算法及与加密相同的伪随机位流,用以还原明文位流。