MySQL数据库加密与解密

来源:互联网 发布:最好用的crm软件 编辑:程序博客网 时间:2024/05/23 10:04
摘要:数据加密、解密在安全领域非常重要。对程序员而言,在数据库中以密文方式存储用户密码对入侵者剽窃用户隐私意义重大。 有多种前端加密算法可用于数据加密、解密,下面我向您推荐一种简单的数据库级别的数据加密、解密解决方案。 在表中插入加密数据 以MySQL数据库为例,它内建了相应的加密函数...

数据加密、解密在安全领域非常重要。对程序员而言,在数据库中以密文方式存储用户密码对入侵者剽窃用户隐私意义重大。

有多种前端加密算法可用于数据加密、解密,下面我向您推荐一种简单的数据库级别的数据加密、解密解决方案。以MySQL数据库为例,它内建了相应的加密函数(AES_ENCRYPT() )和解密函数(AES_DECRYPT())。

在表中插入加密数据

  1. INSERT INTO userdata(username,pasword,encryptedpassword)  
  2. VALUES ('smith','htims',AES_ENCRYPT('htims','key')) 

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

/*

注意:不一定非得是key这个值,可以自定义其他值。

有时插入加密数据时会报错:

mysql> insert into t(id,nam) values(3,AES_ENCRYPT('htims','key'));
ERROR 1366 (HY000): Incorrect string value: '\xC9\xE3C\x80>\x12...' for column 'nam' at row 1

可以把varchar类型改为blob类型,再次插入即可。

*/

下面是表中的数据截图:

从表中查询加密数据

  1. SELECT username,pasword,AES_DECRYPT(encryptedpassword,'key')  
  2. FROM userdata 

上面的查询语句使用了AES_DECRYPT()函数。下面是运行结果:

在上面的截图中,我们可以看到“pasword”和“decryptedpassword”字段的值是相同的,也就是说,你解密了用户密码。(张志平/编译)


原文链接:How to Encrypt and Decrypt in MySQL

--本篇文章转自:http://www.csdn.net/article/2012-02-29/312567

0 0