0
0000000000000000
と0000000000000001
(両方とも16進数)のキーで、平文6d65737361676531
(16進数)を暗号化しようとしています。モードからCrypto.Cipher。しかし何らかの理由でciphertext1_hex
とciphertext2_hex
の両方が3bd2ac43547a7961
と等しくなり、つまり同じ暗号文が得られます。なぜこれが当てはまるのか誰にも分かりますか?それは(56ビットのDES鍵を与える)実際のキー材料である各バイトの最初の7ビットのDES鍵でPython:2つの異なるキーでDES-ECB暗号化を行うと、同じ暗号テキストが返される
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もECBモードでも使用しないでください。 – zaph
16進数「0000000000000000」と「0000000000000001」は他にもあるように[弱いDESキー](http://crypto.stackexchange.com/a/32456/4747)であり、使用すべきではないことに注意してください。 – zaph