如何将十六进制字符串再次转换为密文以进行解密

时间:2015-12-03 05:35:44

标签: python encryption cryptography hex pycrypto

我正在使用pycrypto模块生成密文。问题是生成的密文不能保存在某个地方,因为它不是人类可读的。

 >>> a=AES.new("1234567890123456")
    >>> m='aaaabbbbccccdddd'
    >>> a.encrypt(m)
    'H\xe7\n@\xe0\x13\xe0M\xc32\xce\x16@\xb2B\xd0'

我想将这个加密的邮件保存在我的数据库中,而现在我不能这样做,因为它不是人类可读的。我可以通过转换为十六进制代码来保存数据:

a.encrypto(m).encode('hex')

生成十六进制代码并将其保存到我的数据库中。问题是如何将此encrypted hex code转换回相同的形式进行解密?有人可以帮我吗?

我的用户将从数据库访问加密的邮件,解密它,然后检查邮件的完整性!任何人都可以帮助我将十六进制代码转换回密文吗?

2 个答案:

答案 0 :(得分:2)

使用hex进行反向解码:

>>> encrypted = 'H\xe7\n@\xe0\x13\xe0M\xc32\xce\x16@\xb2B\xd0'
>>> encoded = encrypted.encode('hex')
>>> decoded = encoded.decode('hex')
>>> encrypted == decoded
True

答案 1 :(得分:1)

问题解决! :)

您可以使用base64.b64encode(cipher_text)将数据保存到数据库中,然后使用base64.b64decode(instance.encrypted_message)来检索数据。解决方案对我有用。

您还需要import base64