如何加密MySQL中的值?

时间:2014-11-12 19:13:40

标签: mysql sql encryption

我有这段代码:

CREATE TABLE Person
(
     primaryKey int unsigned NOT NULL,
     emailAddress mediumblob NOT NULL
);

我可以使用什么属性(如NOT NULL)以便加密emailAddress? 我非常感谢你的帮助。我尝试过encrypt(),但那给了我错误。

2 个答案:

答案 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支持的完整加密功能列表。