MySQL提供了4个函数用于哈希加密:PASSWORD, ENCRYPT, SHA1和MD5。
password(),sha1,md5加密都是不可逆的,一般我们使用sha1或者md5对数据库敏感信息进行简单的加密处理,因为都是不可逆的,所以一般应用都是先加密然后去数据库匹配。
但是,当我们有特殊需求,在数据库端是未知的数据,并且不能暴露明文信息。我们可以使用:
加密:AES_ENCRYPT()
解密:AES_DECRYPT()
设置需要加密的字段类型为:varbinary
插入的时候:给AES_ENCRYPT('smtp.163.com',key)一个key:
insert into tb_config (con_key,con_value) values('SYSTEM_SMTP',AES_ENCRYPT('smtp.163.com','SYSTEM_SMTP'));
select AES_DECRYPT(con_value,con_key) as con_value from tb_config where con_key = 'SYSTEM_SMTP';
select con_id,con_key,AES_DECRYPT(con_value,con_key) as con_value,con_status from tb_config;