数据加密、解密在安全领域非常重要。对程序员而言,在数据库中以密文方式存储用户密码对入侵者剽窃用户隐私意义重大。
有多种前端加密算法可用于数据加密、解密,下面我向您推荐一种简单的数据库级别的数据加密、解密解决方案。以MySQL数据库为例,它内建了相应的加密函数(AES_ENCRYPT() )和解密函数(AES_DECRYPT())。
在表中插入加密数据
上面的插入语句有三个字段,“用户名”、“密码”和“加密的密码”。AES_ENCRYPT()函数需要一个“key”来协助加密,同样,解密也需要它(请牢记!)。
下面是表中的数据截图:
从表中查询加密数据
上面的查询语句使用了AES_DECRYPT()函数。下面是运行结果:
在上面的截图中,我们可以看到“pasword”和“decryptedpassword”字段的值是相同的,也就是说,你解密了用户密码。(张志平/编译)
原文链接:How to Encrypt and Decrypt in MySQL
补充:使用加密算法存储的列最好使用二进制数据类型;因为加密之后的密文中会出现许多非文本字符,如果采用其他类型(如text,int)的格式,会出现数据类型不符的错误。
我的实践:
插入之前:
加密插入:
插入后:
原始查询:
解密查询:
Key错误的解密查询: