我尝试为一些使用 AES ECB 的旧硬件实现一些加密。
但如果我只解密消息,它就不起作用。
from Crypto.Cipher import AES
import binascii
key = b'ABCDEFGHIJIKLMOP'
#cipher = AES.new(key.encode("utf8"), AES.MODE_ECB)
#msg = cipher.encrypt(b'a4dd23fff740b203efe19d5cbbc24bba')
msg = (b'AAAAAAAAAAAAAAAA')
#print(type(msg))
#print(msg.hex())
cipher = AES.new(key, AES.MODE_ECB)
msg_en = cipher.encrypt(msg)
print(" ")
print(binascii.hexlify(msg_en))
#print(type(msg_en))
print("--------")
decipher = AES.new(key, AES.MODE_ECB)
msg_dec = decipher.decrypt(msg_en)
print(msg_dec)
print(binascii.hexlify(msg_dec))
#print(type(msg_dec))
Output : b'75ce1408b210410124729691da93c439'
--------
b'AAAAAAAAAAAAAAAA'
b'41414141414141414141414141414141'
如果我用原始加密消息替换解密,我会得到这个:
print("--------")
decipher = AES.new(key, AES.MODE_ECB)
msg_dec = decipher.decrypt(b"75ce1408b210410124729691da93c439")
print(msg_dec)
print(binascii.hexlify(msg_dec))
#print(type(msg_dec))
Output:
b'75ce1408b210410124729691da93c439'
--------
b'\xed}\xcc\xbbI\xae\x11su\xea\xbc9s|\xb2\xc8\x94\x00\xb9\x93\xe4\xdf\xaf\xb8\xffU\xfc\xccS\r'
b'ed7dccbb49ae117375eabc39737cb2c89400b993e4dfafb8ff552ffc49cc530d'
我不明白。
答案 0 :(得分:0)
好的,感谢 Michael Fehr。
解决方案:
from Crypto.Cipher import AES
import binascii
key = b'ABCDEFGHIJIKLMOP'
#cipher = AES.new(key.encode("utf8"), AES.MODE_ECB)
#msg = cipher.encrypt(b'a4dd23fff740b203efe19d5cbbc24bba')
msg = (b'AAAAAAAAAAAAAAAA')
#print(type(msg))
#print(msg.hex())
cipher = AES.new(key, AES.MODE_ECB)
msg_en = cipher.encrypt(msg)
print(" ")
print(binascii.hexlify(msg_en))
#print(type(msg_en))
print("--------")
decipher = AES.new(key, AES.MODE_ECB)
msg_dec = decipher.decrypt(binascii.unhexlify(b"75ce1408b210410124729691da93c439")) # Decipher akzeptiert und Binary kein Hex
print(msg_dec)
print(binascii.hexlify(msg_dec))
#print(type(msg_dec))
Output :
b'75ce1408b210410124729691da93c439'
--------
b'AAAAAAAAAAAAAAAA'
b'41414141414141414141414141414141'
但最后一个问题。为什么先放在Binary里,然后再解密?