![PostgreSQL 11从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/374/27563374/b_27563374.jpg)
上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
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P151_13208.jpg?sign=1739341551-jt9C1YQrqF06z6yi1UiSKLR3DNDJDFeP-0-4fc7b10fe321c6079213225a75a285aa)
图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。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P151_13225.jpg?sign=1739341551-0qU6fpxsGQykbFRSEFTZ9yOGzFEq7GzZ-0-05a3cf40bd6e84c86184bb7d5916c4f0)
图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所示。
![](https://epubservercos.yuewen.com/A04484/15825992904147006/epubprivate/OEBPS/Images/Figure-P152_13252.jpg?sign=1739341551-Io7CwTOqgOZaj5nPT0kOZPOXAvYQukUt-0-e9d15e77352ae24827f57e8003d2ba23)
图6-64 SQL语句执行结果
可以看到,使用相同解密字符串进行解密之后的结果正好为ENCODE函数中被加密的字符串。DECODE函数和ENCODE函数互为反函数。