首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中存储unicode字节的正确方法是什么?

在MySQL中存储unicode字节的正确方法是什么?
EN

Stack Overflow用户
提问于 2020-08-12 18:51:36
回答 1查看 261关注 0票数 0

我正在使用MySQL -连接器,我想将一些数据存储在MySQL数据库中。我使用PyCrypto应用EAS加密,这将产生一个字节字符串,如下所示:

代码语言:javascript
复制
encrypted_data = b'\xd5\x9e\xea \x8d\xc4\xa6P\x93>\xda\x045\xd6\xfa8'

在我的数据库中存储encrypted_data的最有效的方法是什么?

一种想法是将unicode字节转换为十六进制,并将其存储为VARCHAR。不过,在这种情况下,我需要两倍的存储空间。

另一个想法是在MySQL中加密它。虽然我在python中也使用了其他加密和散列函数,但我更愿意使用python中的所有加密功能,这样代码就更有组织和更易读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-12 19:09:39

无论您是用Python还是MySQL加密数据,加密的数据都应该存储在二进制列中。

许多加密和压缩函数返回结果可能包含任意字节值的字符串。如果要存储这些结果,请使用带有VARBINARY或BLOB二进制字符串数据类型的列。这将避免使用非二进制字符串数据类型(CHAR、VARCHAR、TEXT)更改数据值的尾空间移除或字符集转换可能出现的问题。

少量的加密数据应该作为varbinary存储,这类似于varchar。更多的加密数据应该作为blob存储,这是text的二进制版本。

MySQL具有加密和解密功能。,但你只限于AES。如果您对Python中的加密很满意,请使用Python。只需确保将其加密为二进制数据,而不是十六进制,并将其存储在二进制列中。这将是最有效和最安全的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63383016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档