首页 文章

DES是否有任何带7字节密钥的库或代码? [关闭]

提问于
浏览
0

我们是否有任何库或任何机制,我们可以使用真正的7字节密钥来代替8字节密钥 . 我需要它用于DES中的密钥分析,并且关联库的8字节密钥要求在获得实际密钥分析时产生问题 .

3 回答

  • 1

    http://en.wikipedia.org/wiki/Data_Encryption_Standard中所述,DES的8字节密钥只是8字节中的56位密钥,并添加了奇校验:

    密钥名义上存储或传输为8个字节,每个字节具有奇校验 . 根据ANSI X3.92-1981,第3.5节:

    One bit in each 8-bit byte of the KEY may be utilized for error detection in key generation, distribution, and storage. Bits 8, 16,..., 64 are for use in ensuring that each byte is of odd parity.
    

    (结束语)

    因此,给定一个8字节密钥,我可以通过丢弃奇偶校验位并重新格式化来生成7字节密钥,并且给定7字节密钥,我可以通过重新格式化和添加奇偶校验位来生成8字节密钥 . 因此,应该很容易生成包装器,使一个键格式的库看起来像另一个库的库 - 或者你有一些我没有注意到的其他问题?

  • 2

    在DES中,一个密钥由8个字节组成,LSB是一个奇偶校验位,一个漂亮而规则的结构 . 对于输入字节和置换选择1之间的关系有一个含义,即加载两个28位C和D寄存器 .

    按照NBS标准的说法,置换选择是一种选择排列,不使用更大整体的所有值 .

    历史上,任何使用7个字节的DES实现都不兼容,因为有几个FIPS / Nist pub指定了密钥/密文/明文三元组 .

    如果您需要一个代表密钥的56位数字,那么您将以表格形式使用或存储它们 . 否则,您可以简单地保证奇偶校验位正确或说“0” . “打包”键仅用于节省存储空间 .

    如果您需要一个代表密钥的56位数字,您可以在64位值中表示8个字节的密钥,并且在识别出与字节序相关的奇偶校验位位置之后,将所有这些说和完成,将64位数组值移位以消除奇偶校验在64位机器上的8次操作中一次一位,留下56'有效'键位 .

    在32位或更小的机器上,您还必须跟踪字节位置以跟踪位移偏移,并且必须处理在字节之间移动的位以将位打包为7个字节 .

    对于32位机器,您可以将两个32位值以相反的方向打包成28位,然后将第二个的正确4位合并为第一位,然后将第二个值向下移位8位 .

    对于字节编号系统1到8中的大端位,位8,LSB(来自标准)位1-4进入C寄存器,输入键的8个连续字节中只有4位4值(描述为输入的位数组) . D块共享位4并使用位5-7来导出28位:

    Permuted Choice 1

    这里更大的问题可能是根据对处理8字节键表示的那些键有用的通信任何有趣发现的能力 . 具有反函数也可能很方便 .

    圆键和C和D连接块之间也存在关系,如Carl Meyers和Stephen Metyas的书“密码学,计算机安全的新维度”,副 Headers 为“安全系统的设计和实现指南”,Wiley Interscience ,1982,ISBN-0-471- 04892-5 .

    我使用原始BSD libcrypt源的衍生物重新创建了表 . 其重要性在于C和D比特不混合从置换选择2导出的两个24比特值(在表的第16轮中的选定密钥(KS)中可见) .

    Bit  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  
    KS  
       1  15 18 12 25  2  6  4  1 16  7 22 11 24 20 13  5 27  9 17  8 28 21 14  3  
       2  16 19 13 26  3  7  5  2 17  8 23 12 25 21 14  6 28 10 18  9  1 22 15  4  
       3  18 21 15 28  5  9  7  4 19 10 25 14 27 23 16  8  2 12 20 11  3 24 17  6  
       4  20 23 17  2  7 11  9  6 21 12 27 16  1 25 18 10  4 14 22 13  5 26 19  8  
       5  22 25 19  4  9 13 11  8 23 14  1 18  3 27 20 12  6 16 24 15  7 28 21 10  
       6  24 27 21  6 11 15 13 10 25 16  3 20  5  1 22 14  8 18 26 17  9  2 23 12  
       7  26  1 23  8 13 17 15 12 27 18  5 22  7  3 24 16 10 20 28 19 11  4 25 14  
       8  28  3 25 10 15 19 17 14  1 20  7 24  9  5 26 18 12 22  2 21 13  6 27 16  
       9   1  4 26 11 16 20 18 15  2 21  8 25 10  6 27 19 13 23  3 22 14  7 28 17  
      10   3  6 28 13 18 22 20 17  4 23 10 27 12  8  1 21 15 25  5 24 16  9  2 19  
      11   5  8  2 15 20 24 22 19  6 25 12  1 14 10  3 23 17 27  7 26 18 11  4 21  
      12   7 10  4 17 22 26 24 21  8 27 14  3 16 12  5 25 19  1  9 28 20 13  6 23  
      13   9 12  6 19 24 28 26 23 10  1 16  5 18 14  7 27 21  3 11  2 22 15  8 25  
      14  11 14  8 21 26  2 28 25 12  3 18  7 20 16  9  1 23  5 13  4 24 17 10 27  
      15  13 16 10 23 28  4  2 27 14  5 20  9 22 18 11  3 25  7 15  6 26 19 12  1  
      16  14 17 11 24  1  5  3 28 15  6 21 10 23 19 12  4 26  8 16  7 27 20 13  2  
    
      Bit 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48  
    KS  
       1  42 53 32 38 48 56 31 41 52 46 34 49 45 50 40 29 35 54 47 43 51 37 30 33  
       2  43 54 33 39 49 29 32 42 53 47 35 50 46 51 41 30 36 55 48 44 52 38 31 34  
       3  45 56 35 41 51 31 34 44 55 49 37 52 48 53 43 32 38 29 50 46 54 40 33 36  
       4  47 30 37 43 53 33 36 46 29 51 39 54 50 55 45 34 40 31 52 48 56 42 35 38  
       5  49 32 39 45 55 35 38 48 31 53 41 56 52 29 47 36 42 33 54 50 30 44 37 40  
       6  51 34 41 47 29 37 40 50 33 55 43 30 54 31 49 38 44 35 56 52 32 46 39 42  
       7  53 36 43 49 31 39 42 52 35 29 45 32 56 33 51 40 46 37 30 54 34 48 41 44  
       8  55 38 45 51 33 41 44 54 37 31 47 34 30 35 53 42 48 39 32 56 36 50 43 46  
       9  56 39 46 52 34 42 45 55 38 32 48 35 31 36 54 43 49 40 33 29 37 51 44 47  
      10  30 41 48 54 36 44 47 29 40 34 50 37 33 38 56 45 51 42 35 31 39 53 46 49  
      11  32 43 50 56 38 46 49 31 42 36 52 39 35 40 30 47 53 44 37 33 41 55 48 51  
      12  34 45 52 30 40 48 51 33 44 38 54 41 37 42 32 49 55 46 39 35 43 29 50 53  
      13  36 47 54 32 42 50 53 35 46 40 56 43 39 44 34 51 29 48 41 37 45 31 52 55  
      14  38 49 56 34 44 52 55 37 48 42 30 45 41 46 36 53 31 50 43 39 47 33 54 29  
      15  40 51 30 36 46 54 29 39 50 44 32 47 43 48 38 55 33 52 45 41 49 35 56 31  
      16  41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
    

    这几乎表示您的56位数应该与C和D寄存器值连接,因此与圆键有明显的关系,同时允许您根据C和/或D值进行索引 .

  • 0

    我尝试编辑pyDes库代码我只需要7字节密钥,然后通过将'0'填充到第8位的每个倍数将其转换回64位 . 因此,希望获得算法实际需要的7字节密钥的分析,并将奇偶校验位视为0(现在与我的密钥无关):) . 如果我的密钥仍不仅仅用于DES算法,请评论..

相关问题