我正在使用MySQL -连接器,我想将一些数据存储在MySQL数据库中。我使用PyCrypto应用EAS加密,这将产生一个字节字符串,如下所示:
encrypted_data = b'\xd5\x9e\xea \x8d\xc4\xa6P\x93>\xda\x045\xd6\xfa8'在我的数据库中存储encrypted_data的最有效的方法是什么?
一种想法是将unicode字节转换为十六进制,并将其存储为VARCHAR。不过,在这种情况下,我需要两倍的存储空间。
另一个想法是在MySQL中加密它。虽然我在python中也使用了其他加密和散列函数,但我更愿意使用python中的所有加密功能,这样代码就更有组织和更易读。
发布于 2020-08-12 19:09:39
无论您是用Python还是MySQL加密数据,加密的数据都应该存储在二进制列中。
许多加密和压缩函数返回结果可能包含任意字节值的字符串。如果要存储这些结果,请使用带有VARBINARY或BLOB二进制字符串数据类型的列。这将避免使用非二进制字符串数据类型(CHAR、VARCHAR、TEXT)更改数据值的尾空间移除或字符集转换可能出现的问题。
少量的加密数据应该作为varbinary存储,这类似于varchar。更多的加密数据应该作为blob存储,这是text的二进制版本。
MySQL具有加密和解密功能。,但你只限于AES。如果您对Python中的加密很满意,请使用Python。只需确保将其加密为二进制数据,而不是十六进制,并将其存储在二进制列中。这将是最有效和最安全的。
https://stackoverflow.com/questions/63383016
复制相似问题