我正在尝试使用密钥6d65737361676531
和0000000000000000
(均为十六进制)使用来自Crypto的ECB模式的DES密码加密明文0000000000000001
(十六进制) .Cipher。但由于某些原因,ciphertext1_hex
和ciphertext2_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")
答案 0 :(得分:2)
在DES密钥中,它只是每个字节的前7位是实际密钥材料(给出56位的DES密钥)..每个字节的最后一位是奇偶校验位。所以这两个键实际上是同一个键。如果奇偶校验位无法正确,某些实现会抱怨。但这个显然不是。