Python Crypto.Cipher 是直接取十六进制数据吗?
Does Python Crypto.Cipher directly take in hex data?
对AES的基本理解是:
1) 128位/192位/256位密钥
2) 数据块大小为 16 字节/128 位
3) 密文和明文长度相同
然而,当Python Crypto.Cipher AES 实现时,KEY & DATA 以ASCII 形式表示。那么,如果我的原始数据是十六进制格式呢?在将它们传递给 AES 加密之前,我必须将它们转换为 ASCII 格式吗? KEY也需要同样的吗?
我找到的一些示例代码,它显示加密数据可以转换为 HEX 形式,但是输入 (KEY & PLAIN TETXT) 是否必须是 ASCII 形式?
>>> from Crypto.Cipher import AES
>>> a = AES.new("1234567890123456")
>>> m = 'aaaabbbbccccdddd'
>>> a.encrypt(m)
'H\xe7\n@\xe0\x13\xe0M\xc32\xce\x16@\xb2B\xd0'
>>> import binascii
>>> binascii.hexlify(a.encrypt(m))
'48e70a40e013e04dc332ce1640b242d0'
使用bytes.fromhex
应该可以轻松实现objective.
示例:
b = AES.new((bytes.fromhex('31323334353637383930313233343536')))
print(binascii.hexlify(b.encrypt(m)))
对AES的基本理解是: 1) 128位/192位/256位密钥 2) 数据块大小为 16 字节/128 位 3) 密文和明文长度相同
然而,当Python Crypto.Cipher AES 实现时,KEY & DATA 以ASCII 形式表示。那么,如果我的原始数据是十六进制格式呢?在将它们传递给 AES 加密之前,我必须将它们转换为 ASCII 格式吗? KEY也需要同样的吗?
我找到的一些示例代码,它显示加密数据可以转换为 HEX 形式,但是输入 (KEY & PLAIN TETXT) 是否必须是 ASCII 形式?
>>> from Crypto.Cipher import AES
>>> a = AES.new("1234567890123456")
>>> m = 'aaaabbbbccccdddd'
>>> a.encrypt(m)
'H\xe7\n@\xe0\x13\xe0M\xc32\xce\x16@\xb2B\xd0'
>>> import binascii
>>> binascii.hexlify(a.encrypt(m))
'48e70a40e013e04dc332ce1640b242d0'
使用bytes.fromhex
应该可以轻松实现objective.
示例:
b = AES.new((bytes.fromhex('31323334353637383930313233343536')))
print(binascii.hexlify(b.encrypt(m)))