将base-64编码规则编码的字符串的结果返回为二进制字符串。如果参数为NULL或不是有效的base-64字符串,则结果为NULL。FROM_BASE64() 函数可以解码 TO_BASE64() 函数的结果。
不同于现有的 base-64 方案, MySQL TO_BASE64() 和 FROM_BASE64() 函数有些特殊的规则:
字母值 62 的编码是 '+'.
字母值 63 的编码是 '/'.
编码输出由 4 个可打印字符组成。输入数据的每 3 个字节使用 4 个字符进行编码。如果最后一组长度不够 4,则用 '=' 字符填充。
在编码输出的每 76 个字符之后添加一个换行符,以将长输出分成多行。
解码识别并忽略换行符、回车符、制表符和空格。
这里是 MySQL FROM_BASE64() 函数的语法:
FROM_BASE64(str)
参数str必需的。 用于解码 base-64 编码的字符串。
FROM_BASE64(str) 函数解码 base-64 编码的数据并将结果作为二进制字符串返回。
当参数 str 为 NULL 时, TO_BASE64() 函数将返回 NULL。
mysql> SELECT FROM_BASE64('5oiR77yBQQ=='); +-----------------------------+ | FROM_BASE64('5oiR77yBQQ==') | +-----------------------------+ | 我!A | +-----------------------------+ mysql> SELECT FROM_BASE64(NULL); +-----------------+ | FROM_BASE64(NULL) | +-----------------+ | NULL | +-----------------+
使用TO_BASE64()函数对'我!A'进行编码
mysql> SELECT TO_BASE64('我!A'); +----------------------+ | TO_BASE64('我!A') | +----------------------+ | 5oiR77yBQQ== | +----------------------+
我们经常遇到由于安全考虑,数据库中一些用户信息比如密码、手机号、身份证号等信息加密保存。
这是详细信息得内容。
-- ---------------------------- -- Table structure for password -- ---------------------------- DROP TABLE IF EXISTS `password`; CREATE TABLE `password` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `password` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
原始数据:
mysql> select * from password; Empty set (0.00 sec)
插入用户名和加密密码
mysql> INSERT INTO password (name, password)VALUES ('张三', TO_BASE64('123')); Query OK, 1 row affected (0.01 sec)
查询用户名和密码
mysql> select * from password; +----+--------+----------+ | id | name | password | +----+--------+----------+ | 1 | 张三 | MTIz | +----+--------+----------+
解密密码
mysql> SELECT id,name,FROM_BASE64(PASSWORD) as mima from PASSWORD; +----+--------+------+ | id | name | mima | +----+--------+------+ | 1 | 张三 | 123 | +----+--------+------+