【发布时间】:2018-07-06 07:55:11
【问题描述】:
我已经在 haskell 中编写了 DES 算法,但是当我尝试它时,它没有给出正确的输出,我已经单独测试了每个函数,它们似乎工作正常,我接受了一条消息进行加密:明文 = 123456ABCD132536,密钥 = AABB09182736CCDD,当用 DES 加密时,它假设给我作为输出密文 = C0B7A8D05F3A829C。子键都是 (K1..K16) 正确的,l0, r0 也是正确的,l1, r1 , l2, r2 也是正确的,但是在第 3 轮,我得到 r3 = B00A9591 ,但它应该是 B8089591 根据 a我遵循的教程。
(我们有 r2 = 4A1210F6, 展开后它变成 2540A40A17AC, 在与子键 k3 = 6EDA4ACF5B5 异或后我们得到 23AD00A6E219, 替换后我们得到 232713FA, 在直接排列后我们得到 EA727605, 最后与 l2 = 5A78E394 我们得到 B00A9591)
在哪一点是不正确的?即使我用手做我得到相同的结果,我不明白问题是什么,因为第 3 轮使用的函数与第 1 轮和第 2 轮使用的函数相同,没有任何问题。有人可以给我 r3 的正确值,以及可能是什么问题的任何想法吗?我花了很长时间。谢谢。
【问题讨论】:
-
您似乎从某个地方复制了这个问题。无论如何,如果您的代码有问题,您应该将其显示为Minimal, Complete and Verifyable example
-
是的@ArtjomB。对不起,我问过密码学,但他们告诉我应该在这里问,好的,我会这样做
-
您可以edit您的问题而无需提出新问题。
-
在测试分组密码实现时,最好先用密钥 0...0 加密明文 0...0,以避开字节顺序或位顺序的问题。如果你得到 (0,0) 的正确答案,那么打开明文或密钥中的一个位。
-
在第 3 轮中,S Boxes 输出 232713FA 是错误的。
标签: encryption cryptography des