Я пытаюсь зашифровать открытый текст 6d65737361676531
(в шестнадцатеричном формате) с помощью ключей 0000000000000000
и 0000000000000001
(оба в шестнадцатеричном формате), используя шифр DES в режиме ECB от Crypto.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")
0000000000000000
и0000000000000001
являются слабыми ключами DES, как и многие другие, и их не следует использовать. - person zaph   schedule 27.05.2016