gpt4 book ai didi

encryption - 为什么更改三重 DES key 或初始值中的一位不会给出不同的加密数据?

转载 作者:行者123 更新时间:2023-12-04 01:16:54 26 4
gpt4 key购买 nike

我正在使用 pyDes 来加密一些数据。我想证明,即使更改 key 或初始值的一位,加密数据也会完全不同。我设置了 16 字节的 key 以将最后一个字符更改 +/- 1,导致至少一位不同。然而,即使我这样做了,加密数据的 3 个不同实例也不完全不同。

from pyDes import *

data = 'Hello'

# CBC : Cipher-Block-Chaining
# \0..\1: arbitrary initial value for CBC
# pad=None: let pyDes take care of padding bytes
k1 = triple_des("16-byte-key-here", CBC, "\0\0\0\0\0\0\0\1", pad=None, padmode=PAD_PKCS5)
k2 = triple_des("16-byte-key-herf", CBC, "\0\0\0\0\0\0\0\1", pad=None, padmode=PAD_PKCS5)
k3 = triple_des("16-byte-key-herd", CBC, "\0\0\0\0\0\0\0\1", pad=None, padmode=PAD_PKCS5)

d1 = k1.encrypt(data)
d2 = k2.encrypt(data)
d3 = k3.encrypt(data)

assert d1 != d2
assert d2 != d3
assert d1 != d3

如果我只对键或初始值做一个小改动,其中一个断言似乎会失败;我已经看到 d1 != d2d1 != d3 都失败了,具体取决于我所做的更改。我还尝试将 'Hello' 更改为 'Hello' * 50 以确保这不仅仅是输入数据太短的情况。

如果我制作完全随机的 key ,断言就会通过。对于如上所示的程序,d1 != d3 失败(这些键相隔一位;k1-k2 相差 2 位)。

我绝不是加密专家,但如果两个 key 仅相隔一位导致相同的加密数据,那么这意味着暴力破解 key 所需的努力减少了两倍,对吧?

我是否遗漏了一些明显的东西? Triple DES 不应该为非常相似的 key 提供独特的结果吗?或者这是 PyDes 中的错误?也许其他人可以在另一个实现中确认此行为?


@Chris Jester-Young 得到的答案是 key 中的某些位是奇偶校验位。事实证明,根据 this article :

Note that although the input key for DES is 64 bits long, the actual key used by DES is only 56 bits in length. The least significant (right-most) bit in each byte is a parity bit, and should be set so that there are always an odd number of 1s in every byte. These parity bits are ignored, so only the seven most significant bits of each byte are used, resulting in a key length of 56 bits. This means that the effective key strength for Triple DES is actually 168 bits because each of the three keys contains 8 parity bits that are not used during the encryption process.

(重点是我的)

那些奇偶校验位正是我在示例中更改的位。

谢谢克里斯!

最佳答案

在DES中, key 的某些位是奇偶校验位,实际上不影响加密/解密。

关于encryption - 为什么更改三重 DES key 或初始值中的一位不会给出不同的加密数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1284412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com