首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DES加密函数给了我一个错误的密文

DES加密函数给了我一个错误的密文
EN

Stack Overflow用户
提问于 2016-09-09 02:11:58
回答 1查看 381关注 0票数 1

我已经用haskell写了DES算法,但是当我尝试它的时候,它没有给出正确的输出,我已经测试了每个函数本身,它们似乎工作正常,我已经拿了一条消息进行加密: plainText = 123456ABCD132536,密钥= AABB09182736CCDD,当用DES加密时,它应该给我输出cipherText = C0B7A8D05F3A829C。子键都是正确的(K1..K16),l0,r0也是正确的,l1,r1,l2,r2也是正确的,但在第三轮,我得到了r3 = B00A9591,但根据我遵循的教程,它应该是B8089591。

( r2 = 4A1210F6,展开后为2540A40A17AC,与子键k3 = 6EDA4ACF5B5进行异或后得到23AD00A6E219,替换后得到232713FA,直排后得到EA727605,最后与l2 = 5A78E394进行异或得到B00A9591)

在哪一点上是不正确的?即使我手工操作,我也得到了相同的结果,我不知道问题是什么,因为第三轮使用的函数与第一轮和第二轮使用的相同,没有任何问题。有没有人能告诉我r3的正确值,以及问题出在哪里?我花了很长时间。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-09 23:35:48

这是从Eugene Styer的JavaScript DES Example的副本中完成的,该副本已被修改,允许通过删除只读属性和默认值来输入密钥。允许设置密钥的原始代码的副本可以在Google Code上使用。

它产生输出密文c0b7a8d05f3a829c

代码语言:javascript
运行
复制
Round 3  
E   :  001001 010100 000010 100100 000010 100001 011110 101100 2540A40A17AC  
KS  :  000001 101110 110110 100100 101011 001111 010110 110101 06EDA4ACF5B5  
E xor KS:  001000 111010 110100 000000 101001 101110 001000 011001 23AD00A6E219  
Sbox:  0010 0011 0010 0111 0001 0011 1111 0000 232713FA  (should be 232713F0)  
P   : 11100010 01110000 01110110 00000101 EA727605 (should be E2707605)  
L[i]: 01001010 00010010 00010000 11110110  
R[i]: 10111000 00001000 10010101 10010001  

您的十六进制输出已经添加了注释,并告诉我们S框8的第01行索引12 (1100)生成的输出为1010,而实际输出应为0000。

来自FIPS Pub 46的S Box 8值:

代码语言:javascript
运行
复制
    13, 2, 8, 4, 6,15,11, 1,10, 9, 3,14, 5, 0,12, 7,
     1,15,13, 8,10, 3, 7, 4,12, 5, 6,11, 0,14, 9, 2,
     7,11, 4, 1, 9,12,14, 2, 0, 6,10,13,15, 3, 5, 8,
     2, 1,14, 7, 4,10, 8,13,15,12, 9, 0, 3, 5, 6,11,

向下的第二行,第13列元素。

对于标记为B1到B6的6位输入011001,通过连接B1和B6 (01或从0开始计数的行1)找到行,通过连接B2到B5 (1100)找到列。

下面的P排列中的差异是由两个意外的'1‘位引起的。

如果没有Minimal Complete and Verifiable example,就无法确定这是否是唯一的错误。

有关测试向量的信息,请参阅vhdl - Data Encryption Standard test vectors - Stack Overflow,该测试向量允许使用由全零组成的键测试S盒。(答案最后一段的dropbox链接仍然有效。)

显示对JS-DES.html的修改的diff:

代码语言:javascript
运行
复制
623c623
<         <td><input name="key" value="0000000000000000" size="25" type="text"></td>
---
>         <td><input name="key" value="3b3898371520f75e" readonly="readonly" size="25" type="text"></td>
627c627
<         <td><input name="keyb" value="0000000000000000" size="25" type="text"></td>
---
>         <td><input name="keyb" value="922fb510c71f436e" readonly="readonly" size="25" type="text"></td>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39397607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档