
6.7 加密函数
加密函数主要用来对数据进行加密和解密处理,以保证某些重要数据不被别人获取。这些函数在保证数据库安全时非常有用。本节将介绍各种加密和解密函数的作用和使用方法。
6.7.1 加密函数PASSWORD(str)
PASSWORD(str)用原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL。
【例6.97】使用PASSWORD函数加密密码,输入语句如下:

MySQL将PASSWORD函数加密后的密码保存到用户权限表中。
提示
PASSWORD()函数在MySQL服务器的鉴定系统中使用,不应将它用在个人的应用程序中。PASSWORD()加密是单向的(不可逆)。PASSWORD()执行密码加密与UNIX中密码被加密的方式不同。
6.7.2 加密函数MD5(str)
MD5(str)为字符串算出一个MD5 128比特校验和。该值以32位十六进制数字的二进制字符串形式返回,若参数为NULL,则会返回NULL。
【例6.98】使用MD5函数加密字符串,输入语句如下:

可以看到,“mypwd”经MD5加密后的结果为318bcb4be908d0da6448a0db76908d78。
6.7.3 加密函数ENCODE(str,pswd_str)
ENCODE(str,pswd_str)使用pswd_str作为密码,加密str。使用DECODE()解密,结果是一个和str长度相同的二进制字符串。
【例6.99】使用ENCODE加密字符串,输入语句如下:

可以看到,加密后的显示结果为乱码,但加密后的长度和被加密的字符串长度相同,均为6。
6.7.4 解密函数DECODE(crypt_str, pswd_str)
DECODE(crypt_str,pswd_str)使用pswd_str作为密码,解密加密字符串crypt_str,crypt_str是由ENCODE()返回的字符串。
【例6.100】使用DECODE函数解密被ENCODE加密的字符串,输入语句如下:

可以看到,使用相同解密字符串进行解密之后的结果正好为ENCODE函数中被加密的字符串。DECODE函数和ENCODE函数互为反函数。