MySQL 5.7 用的是哪种不可逆算法来加密用户密码的

MySQL实际上是使用了两次SHA1夹杂一次unhex的方式对用户密码进行了加密。具体的算法可以用公式表示:password_str = concat('*', sha1(unhex(sha1(password)))) 我们可以用下面的方法做个简单的验证。

keepalived@10.0.0.88 [(none)]>select password('tom'),concat('*', sha1(unhex(sha1('tom'))));
+-------------------------------------------+-------------------------------------------+
| password('tom') | concat('*', sha1(unhex(sha1('tom')))) |
+-------------------------------------------+-------------------------------------------+
| *71FF744436C7EA1B954F6276121DB5D2BF68FC07 | *71ff744436c7ea1b954f6276121db5d2bf68fc07 |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)