des子密钥生成和子密钥逆推原始密钥

阅读: 评论:0

des子密钥生成和子密钥逆推原始密钥

des子密钥生成和子密钥逆推原始密钥

工具

#为了便于运算,将原来的PC1和PC2都减了1

PC1=[56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3]
PC2=[13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31]
movnum = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]#对应16轮中每一轮的循环左移位数

过程

原始密钥为64位
去除校验位后56位(校验位在每bytes的第八位)
经过pc-2置换后剩余48位

逆推K

取第一轮子密钥生成为例记子密钥为key1.

  1. pc-2逆置换
    pc-2置换过程是56位至48位的过程,因此其中有些bit丢弃了.我们首先假设置换前的为CD1=['*']*56
    这样通过逆置换CD1[PC2[i]]=key1[i]
    于是还剩8个未知的bit
    记这8个比特位分别为 a b c d e f g h 将CD1继续进行子密钥的生成过程得到key2
    这时如果我们知道key2的值那么就基本可以将 a b c d e f g h给一一对应求出来.
    2.循环左移逆运算
    C1 = CD1[:28]D1 = CD1[28:]C1 = C1[-1:] + C1[:-1]D1 = D1[-1:] + D1[:-1]CD1=C1+D1 

3.pc-1逆置换
4.爆破奇偶校验位

本文发布于:2024-01-30 04:36:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170656056919263.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:密钥   原始   des
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23