我正在使用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
转换回相同的形式进行解密?有人可以帮我吗?
我的用户将从数据库访问加密的邮件,解密它,然后检查邮件的完整性!任何人都可以帮助我将十六进制代码转换回密文吗?
答案 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