MySQL数据库如何加密和解密

2014年7月30日 | 分类: 【技术】

对数据库中数据的加密、解密非常的重要

  1. 在数据库中以密文方式存储数据,即便被拖库,也没问题。
  2. 如果数据库管理权限混乱,敏感数据以明文存储是个大问题。

有多种前端加密算法可用于数据加密、解密,以下是一种数据库级别的数据加密、解密解决方案。

以MySQL数据库为例,它内建有加密函数(AES_ENCRYPT() )和解密函数(AES_DECRYPT())。

在表中插入加密数据

INSERT INTO userdata(username,password,encryptedpassword)
VALUES (‘smith’,’htims’,AES_ENCRYPT(‘htims’,’key’))

上面的插入语句有三个字段,“用户名”、“密码”和“加密后的密码”。AES_ENCRYPT()函数需要一个“key”来协助加密,同样,解密也需要它(这个key是关键!)。

从表中查询加密数据

SELECT username,password,AES_DECRYPT(encryptedpassword,’key’)
FROM userdata

上面的查询语句使用了AES_DECRYPT()函数。

查询结果中可以看到“password”和“decryptedpassword”字段的值是相同的。