在MySQL中使用BLOB或VARBINARY加密数据?

Tre*_*ott 4 mysql schema database-design relational-database

我正在开发一个PHP应用程序,它通过文本区域接受用户输入.它将以加密方式存储在数据库中(使用AES_ENCRYPT).

我应该使用BLOB或VARBINARY字段吗?是否对这两种类型的领域都有性能影响?

Boh*_*ian 10

既BLOB和VARBINARY是"字符串"的数据类型,存储的二进制串(有效字节数组),而不是通常的字符串类型,其存储字符的字符串,字符集编码等

在大多数方面,您可以将BLOB列视为VARBINARY列,可以根据需要大小.

BLOB在以下方面与VARBINARY不同:

  • 存储或检索值时,BLOB列不会删除尾随空格.
  • 对于BLOB列上的索引,必须指定索引前缀长度.
  • BLOB列不能具有DEFAULT值.

使用BLOB,因为如果您的加密值恰好以空格字节(十六进制20)结尾,那么它将被VARBINARY截断,从而有效地破坏您的值.此外,您不会在加密值上放置索引,因此索引问题无关紧要,也不会有默认值.