【发布时间】:2018-12-25 13:35:21
【问题描述】:
您好,我正在尝试将信息存储在 mysql 数据库中。我希望它被加密,但我希望能够不时返回纯文本版本。我目前正在使用的列是 varchar btw,我正在使用 Python3.6 和 PyCrypto
为了加密,我调用了 pycrypto 的 encrypt 函数,该函数返回一个字节对象。我不能将它存储在数据库中,但如果我将它更改为字符串,我可以存储它。我可以在解码后存储 estr 或加密,它们是相同的。这是在转换为字符串之前加密的样子:
b'\x8ae"\xd5\xdd:s!*\x1b\x11!7\x16\xbel'
encrypted = encryption_suite.encrypt(plainText)
estr = ''.join(chr(x) for x in encrypted)
encrypted = encrypted.decode("unicode_escape")
当我检索加密字符串并尝试对其进行解码时,我无法返回原始文本。我收到以下错误“输入字符串的长度必须是 16 的倍数”。这是代码:
db_val = get string from db
bytes_ = db_val.encode('unicode_escape')
decrypted = decryption_suite.decrypt(bytes_)#this line results in the above error
b'?e"\xd5\xdd:s!*\x1b\x11!7\x16\xbel' 是 bytes_ 的样子。这与原始加密字符串的值非常相似,但开头是关闭的。
关于如何解决这个问题的任何想法?
【问题讨论】:
标签: python mysql encryption pycrypto