加密函数用于对数据做摘要、编码或解码处理。它们常用于密码摘要、校验串生成、简单的内容保护等场景。
PASSWORD() 是 MySQL 早期版本中的一个密码相关函数。
示例:
SELECT PASSWORD('mypassword');但需要注意:
- 它主要是 MySQL 内部历史用途
- 不适合作为通用业务密码加密方案
- 在较新的 MySQL 版本中兼容性和可用性存在变化
因此在业务系统中,不建议把 PASSWORD() 当作应用层密码存储方案。
MD5() 用于生成字符串的 MD5 摘要值。
示例:
SELECT MD5('mysql');
SELECT MD5('123456');它通常会返回一个 32 位十六进制字符串。
常见用途:
- 内容摘要
- 简单校验
- 历史系统中的弱加密场景
不过 MD5 已经不适合用于高安全要求的密码存储,只适合做一般性的摘要或兼容旧系统。
ENCODE() 和 DECODE() 用于按指定密码对字符串进行编码和解码。
示例:
SELECT ENCODE('hello', 'key123');
SELECT DECODE(ENCODE('hello', 'key123'), 'key123');可以理解为一种较简单的可逆处理方式。
它更适合:
- 演示 MySQL 编码函数的基本用法
- 对低敏感内容做简单隐藏
但对于真正的安全场景,例如密码、密钥、用户隐私数据,不能依赖这类简单函数作为完整安全方案。
实际业务中应当遵循以下原则:
- 密码不要明文存储。
- 不要把
MD5()当作高安全密码方案。 - 不要把
PASSWORD()当作业务密码存储方式。 - 更高安全需求应交给应用层成熟加密库处理。
MySQL 自带的加密函数更适合做基础摘要、演示和轻量处理,不适合作为完整的现代安全方案。学习这些函数的重点在于理解它们的用途边界,而不是把它们直接当作生产级密码系统。