数据是信息系统中最核心的资产,数据的丢失、破坏或泄漏,很可能会带来难以估量的损失。对敏感数据进行加密是数据安全防护中最核心的手段之一。数据库加密能够显著提升数据库的安全性。加密后,数据以密文的方式存储,防止了数据直接暴露,同时增强对加密数据的访问控制,大大降低了数据被泄漏和恶意破坏的风险。
MySQL中的数据加密解密用法。主要包括PASSWORD()、MD5()、ENCODE()、DECODE()。
PASSWORD(str)将字符串加密为长字符串,并且对被加密的字符串区分大小写。PASSWORD函数加密后是不可逆的,即不能从解密结果通过算法返回被加密的字符。
不可逆加密在实际中的一个应用,电商平台的用户名和密码需要存在数据库里面,但是平台不能够存用户明文密码。就需要把用户的密码进行不可逆加密后进行存储,然后每次用户登录输入的密码明文转换成密文进行比对,相同才能够登录。这样既能保证用户密码不被平台保存,也可以进行密码 性校验登录。
SELECT
name,
PASSWORD(name)
FROM
test
MD5加密算法和PASSWORD加密函数雷同,只是MD5的加密算法是公开的,很容易被别人破译,所以其是可逆的并且安全性不高。
SELECT
name,
MD5(name)
FROM
test
ENCODE加密函数是需要密钥的,加密的结果输出的是一些看似乱码的符号,可以通过密钥进行解密。
SELECT
name,
ENCODE(name,"wfl")
FROM
test
DECODE和ENCODE是一套,对ENCODE加密的数据进行解密。
SELECT
*,
DECODE(miwen,)错误解密码,
DECODE(miwen,"wfl")正确解密
FROM
(SELECT
name,
ENCODE(name,"wfl")asmiwen
FROM
test)b