PostgreSQL 11从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

6.7 加密函数

加密函数主要用来对数据进行加密和界面处理,以保证某些重要数据不被别人获取。这些函数在保证数据库安全时非常有用。本章将介绍各种加密和解密函数的作用和使用方法。

6.7.1 加密函数MD5(str)

MD5(str)为字符串算出一个MD5 128比特检查和。该值以32位十六进制数字的二进制字符串的形式返回,若参数为NULL则会返回NULL。

【例6.62】使用MD5函数加密字符串,输入语句如下:

     SELECT MD5 ('mypwd');

语句执行后,结果如图6-62所示。

可以看到,“mypwd”经MD5加密后的结果为318bcb4be908d0da6448a0db76908d78

图6-62 SQL语句执行结果

6.7.2 加密函数ENCODE(str,pswd_str)

ENCODE(str,pswd_str)使用pswd_str作为加密编码,加密str,常见的加密编码包括base64、hex和escape。

【例6.63】使用ENCODE加密字符串,输入语句如下:

     SELECT ENCODE('secret','hex'), LENGTH(ENCODE('secret','hex'));

语句执行后,结果如图6-63所示。可以看到,加密后的长度为12。

图6-63 SQL语句执行结果

6.7.3 解密函数DECODE(crypt_str,pswd_str)

DECODE(crypt_str,pswd_str)将pswd_str作为密码,解密加密字符串crypt_str。crypt_str是由ENCODE()返回的字符串。

【例6.64】使用DECODE函数解密被ENCODE加密的字符串,输入语句如下:

     SELECT DECODE(ENCODE('secret','hex'),'hex');

语句执行后,结果如图6-64所示。

图6-64 SQL语句执行结果

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