双向加密+查找?

时间:2011-12-08 16:20:31

标签: mysql sql encryption hash

如果我不想在数据库中以纯文本形式存储用户电子邮件,但需要它们来运行查找,是否有办法加密(双向以便可以检索内容)并轻松查看价值上涨?

编辑是否会存储两列,一列是加密显示的,一列是为查找工作而进行的?

2 个答案:

答案 0 :(得分:4)

对于这类事情,MySQL有aes_encrypt()aes_decrypt(),但是你仍然在明确地传递加密密钥,这意味着你可能只是传递电子邮件地址明确。

基本方法如下:

SELECT ...
FROM yourtable
WHERE encrypted_email = AES_ENCRYPT('someone@example.com', 'crypt key here');

但同样,由于您每次都发送密钥,因此您无法获得任何安全保障。

答案 1 :(得分:0)

这取决于您如何加密数据。您是在代码中进行加密然后插入加密值吗?如果是这样,那么您只需查找加密值而不是明文值即可查找值。

伪代码:

string encryptedEmail = Encrypt("test@test.com", myEncryptionKey);
....
string sInsert = "INSERT INTO table (email) VALUES ('" + encryptedEmail + "')";
...
string sSelect = "SELECT * FROM table WHERE email = '" + encryptedEmail + "'";

现在你只是通过网络传递加密信息,密钥永远不会出现在任何地方。