【问题标题】:Does Python Crypto.Cipher directly take in hex data?Python Crypto.Cipher 是否直接接收十六进制数据?
【发布时间】:2020-04-01 16:34:23
【问题描述】:

对 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'

【问题讨论】:

    标签: python-3.x aes


    【解决方案1】:

    使用bytes.fromhex应该可以轻松实现目标。

    例子:

    b = AES.new((bytes.fromhex('31323334353637383930313233343536')))
    print(binascii.hexlify(b.encrypt(m)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多