Python: 使用两个不同密钥的 DES-ECB 加密产生相同的密文

Python: DES-ECB encryption with two different keys result in the same ciphertext

我正在尝试使用 DES 密码在 ECB 模式下使用密钥 00000000000000000000000000000001(均为十六进制)加密明文 6d65737361676531(十六进制)来自 Crypto.Cipher。但出于某种原因,ciphertext1_hexciphertext2_hex 是相等的 3bd2ac43547a7961,即它们产生相同的密文。有谁知道为什么会这样吗?

from Crypto.Cipher import DES

key1_hex = "0000000000000000"
key2_hex = "0000000000000001"

key1 = key1_hex.decode("hex")
key2 = key2_hex.decode("hex")

des1 = DES.new(key1, DES.MODE_ECB)
des2 = DES.new(key2, DES.MODE_ECB)

plaintext_hex = "6d65737361676531"
plaintext = plaintext_hex.decode("hex")

ciphertext1 = des1.encrypt(plaintext)
ciphertext2 = des2.encrypt(plaintext)

ciphertext1_hex = ciphertext1.encode("hex")
ciphertext2_hex = ciphertext2.encode("hex")

在 DES 密钥中,只有每个字节的前 7 位是实际密钥 material(给出 56 位的 DES 密钥)..每个字节的最后一位是奇偶校验位。所以这两个键实际上是同一个键。如果奇偶校验位不正确,一些实现会报错。但是这个显然没有。