如何在mysql数据库中加密电子邮件,但仍能查询它们?

bsh*_*ack 8 mysql security encryption

我想使用加密将用户的电子邮件地址存储在MySQL数据库中,以确保在数据库受到攻击时不会公开它们.我相信如果我使用mysql AES_ENCRYPT()函数加密它们,我就无法在INNODB表中创建索引,因为我必须使用BLOB数据类型.如果表格变得非常大,则需要很长时间.

保护电子邮件地址的最佳解决方案是什么,但仍然能够快速查询并将其保留为列中的唯一值?

Cam*_*ker 12

当用户在您的站点上注册时,请使用AES_ENCRYPT()来加密电子邮件.

INSERT into users (email) VALUES (AES_ENCRYPT('someemail@example.com', 'aeskey'));
Run Code Online (Sandbox Code Playgroud)

查询数据库时,可以像这样调用AES_DECRYPT()函数:

SELECT AES_DECRYPT(email, 'aeskey') from users;
Run Code Online (Sandbox Code Playgroud)