我有这段代码:
CREATE TABLE Person
(
primaryKey int unsigned NOT NULL,
emailAddress mediumblob NOT NULL
);
我可以使用什么属性(如NOT NULL)以便加密emailAddress? 我非常感谢你的帮助。我尝试过encrypt(),但那给了我错误。
答案 0 :(得分:3)
如果您希望加密可以在以后解密的数据,那么您应该使用ES_ENCRYPT() AND AES_DECRYPT()
根据手册
AES_ENCRYPT() encrypts a string and returns a binary string. AES_DECRYPT() decrypts the encrypted string and returns the original string. .
MySQL 5.1 Doc: AES_ENCRYPT() / AES_DECRYPT()
你可以像这样使用它
INSERT INTO table (email)VALUES(AES_ENCRYPT('myemail', 'secrectkey' ))
要读取加密的数据,您可以执行此操作
SELECT AES_DECRYPT(email, 'secrectkey' ) FROM table
其中secrectkey实际上是一个秘密值,只有授权用户才能访问
但如果您正在寻找哈希“无法以纯文本形式回读的单向哈希”,您可以使用以下功能之一
MD5('myemail');
OR
PASSWORD('myemail');
OR
SHA1('myemail');
然后您的表长度取决于您使用的加密方法。如果加密消息的长度发生变化,您可以使用VARCHAR()。如果你知道你将使用固定长度,我会使用CHAR(exact_length)
同样,长度取决于您使用的方法。
答案 1 :(得分:0)
您可以在此官方documentation上获得MySQL DBMS支持的完整加密功能列表。