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

时间:2016-05-27 10:57:00

标签: python encryption des

我正在尝试使用密钥6d657373616765310000000000000000(均为十六进制)使用来自Crypto的ECB模式的DES密码加密明文0000000000000001(十六进制) .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")

1 个答案:

答案 0 :(得分:2)

在DES密钥中,它只是每个字节的前7位是实际密钥材料(给出56位的DES密钥)..每个字节的最后一位是奇偶校验位。所以这两个键实际上是同一个键。如果奇偶校验位无法正确,某些实现会抱怨。但这个显然不是。