![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=1738832247-w5SY1tmggfpmolCNGjQTMhfK77WrTgXK-0-0077d98fff204535386139e0f3725e34)
图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=1738832247-bBxSEhFiD6CR578NjEIaHF3tYpBrcDaM-0-cd7d949f185157712847f9e7bcd4869e)
图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=1738832247-fdudiM1bGqeADjbG00IYQfgDoviw9FIg-0-7a341e8fef183d6d93fddb00b209f4ca)
图6-64 SQL语句执行结果
可以看到,使用相同解密字符串进行解密之后的结果正好为ENCODE函数中被加密的字符串。DECODE函数和ENCODE函数互为反函数。