我的数据库中有一个电子邮件属性。我将它存储在 TINYTEXT
中。但现在我决定使用 AES_ENCRYPT
对其进行加密并将其加密存储。我应该使用什么类型和大小的电子邮件来避免任何问题?
来自 the文档 我决定将电子邮件存储为 VARBINARY(60)
。以下是我对此的看法:
16 × (trunc(string_length / 16) + 1)
I want my email to be VARCHAR(32)
16 × (trunc(32 / 16) + 1) = 48
But in order to avoid padding problems I will use 60 instead of 48.
So, the type of the encrypted email will be VARBINARY(60)
我说得对吗?
最佳答案
简单答案:VARBINARY(48)
,如您计算的那样。但是,要处理更长的电子邮件地址,BLOB
。
梅西耶答案:
AES_ENCRYPT
对字符串进行了一些扩展,所以加密后254会超过255。此外,它还返回非字符字节。
BLOB
是一个简单的答案。 VARBINARY(256)
也可能有效,但可能没有任何优势。 (我怀疑 utf8 字符可能会超过 256 个。)
需要索引吗?这可能会导致其他问题。
如果您将电子邮件限制为 32 个 ascii 字符,您将排除或截断世界的多少百分比?
关于mysql - 加密电子邮件在 mysql InnoDB 中应该有什么类型和大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49360031/