mysql - 加密电子邮件在 mysql InnoDB 中应该有什么类型和大小?

标签 mysql encryption innodb

我的数据库中有一个电子邮件属性。我将它存储在 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/

相关文章:

mysql - 从nodejs mysql连接函数返回数据

php - 从一行SQL查询中的数字中减去 "1"

node.js - 在 node.js 上使用 aes-ecb 加密二进制数据

mysql - 计算唯一行性能

MySQL 区分最新记录成对分组

mysql - 在 Open Query SQL 语句中指定表

algorithm - 为什么无法手动测试 AES 算法?

javascript - crypto-js 输出与 Node 加密不同

php - 从MAMP切换到MAMP Pro,无法启动mysql

php - 如何禁用和启用mysql中所有表的所有约束