07-加密函数
7.6 加密函数
本节视频教学录像:1分钟MySQL中加密函数用来对数据进行加密和解密的处理,以保证数据表中某些重要数据不被别人窃取,这些函数能保证数据库的安全,本节将介绍MySQL中加密和解密函数的使用方法。
提示 PASSWORD(str)函数在MySQL服务器的鉴定系统中使用;不应将其用在个人的应用程序中,PASSWORD(str)加密是单向的(不可逆),其执行密码加密和UNIX中密码加密的方式不同。
【范例7-52】
使用PASSWORD(str)函数返回一个不可逆的加密密码的操作,输入语句如下。
mySQL> select PASSWORD('test'); +-------------------------------------------+ |PASSWORD(‘test’) | +-------------------------------------------+ | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 | +-------------------------------------------+
由执行结果可以看出,PASSWORD(str)函数将字符串‘test’加密为长字符串,MySQL将该函数加密之后的密码保存到用户权限表中。
【范例7-53】
使用MD5(str)函数返回加密字符串的操作,输入语句如下。
mySQL> select MD5('test'); +----------------------------------+ |MD5('test') | +----------------------------------+ | 098f6bcd4621d373cade4e832627b4f6 | +----------------------------------+
该加密函数的加密形式是可逆的,可以使用在应用程序中。由于MD5的加密算法是公开的,所以这种函数的加密级别不高。
【范例7-54】
使用ENCODE(str,pswd_str)函数返回加密字符串的操作,输入语句如下。
mySQL> select ENCODE('test','hello'),LENGTH(ENCODE('test','hello')); +------------------------+--------------------------------+ | ENCODE('test','hello') | LENGTH(ENCODE('test','hello')) | +------------------------+--------------------------------+ |2=wÍ | 4| +------------------------+--------------------------------+
由执行结果可以看出,被加密的字符串‘test’,使用密钥‘hello’经过ENCODE函数进行加密之后得到的结果是乱码,但是这个乱码的长度和被加密的字符长度相同,都是4。
【范例7-55】
使用DECODE(crypt_str,pswd_str)函数解密被ENCODE加密的字符串的操作,输入语句如下。
mySQL> select DECODE(ENCODE('test','hello'),'hello'); +----------------------------------------+ | DECODE(ENCODE('test','hello'),'hello') | +----------------------------------------+ |test | +----------------------------------------+
由执行结果可以看出,使用DECODE函数可以将使用ENCODE加密的字符串解密还原,这两个函数互为反函数。