MySQL对称加密
mysql中对密码一般采取非对称加密,除了密码外业务上有时也需要对部分字段进行对称加密。
常见对称加密算法:
- AES
- DES
- RC4
- Rabbit
- TripleDes
常用的编码方式:
- N进制(N>=2 && N<= 36),只能表示数字类型。
- baseN(N=[16,32,64]),可表示任意类型。
mysql中可以用conv方法对数字进行转换,如:
select conv(101010,2,10);
select conv(13888888888,10,32);
mysql常用的对称加密方法:
- aes_encrypt
- des_encrypt
使用方法
select aes_encrypt("password","key");
select des_encrypt("password","key");
不出意外的话话出现一堆不认识的字符
mysql> select des_encrypt("password","key");
+-------------------------------+
| des_encrypt("password","key") |
+-------------------------------+
| ??bR?G
8?????=? |
+-------------------------------+
因为des_encrypt返回的是二进制序列(binary),需要将字节序列编码为字符串(即baseN)才可正常显示。常见的做法是base16或base64。
mysql> SELECT to_base64(aes_encrypt('password','key'));
mysql> SELECT hex(aes_encrypt('password','key'));
+------------------------------------+
| hex(aes_encrypt('password','key')) |
+------------------------------------+
| 9BDD7DE3EFED2089E18D6EB20B3C2DA0 |
+------------------------------------+
Comments