如何在mysql中散列密码以实现spring安全兼容性

如何在mysql中散列密码以实现spring安全兼容性,mysql,spring-security,Mysql,Spring Security,我一次加载了很多用户配置文件。我使用password()函数为mysql数据库生成SQL脚本。 但这不行。生成的密码与spring boot应用程序表单中生成的密码不同 这适用于运行在linux 4.15.0-54和java 8上的MySQL服务器5.7.26 例如,对于密码字符串“test0000”,spring security生成的密码为: 5f7433f76544679849ec917c3baa70e0852b3d025fb52ecb7839c6fe911f75c49b3b2315aa3

我一次加载了很多用户配置文件。我使用
password()
函数为mysql数据库生成SQL脚本。 但这不行。生成的密码与spring boot应用程序表单中生成的密码不同

这适用于运行在linux 4.15.0-54和java 8上的MySQL服务器5.7.26

例如,对于密码字符串“test0000”,spring security生成的密码为:
5f7433f76544679849ec917c3baa70e0852b3d025fb52ecb7839c6fe911f75c49b3b2315aa3589c
但mysql中的password('test0000')函数提供:
*FED47FB319BAC61E726825628D8A5D22979E9F1C

那么,如何在mysql或linux的命令行中生成类似springboot的密码呢?

mysql的
password()
函数使用
SHA1(SHA1(密码))
来计算哈希值

Spring Security使用
PasswordEncoder
接口来
encode
match
,并且有不同的实现可用于处理BCrypt、MD5、SHA256等

因此,为了使密码在两端都兼容,您需要使用相同的算法


由于散列算法很慢,因此不建议在SQL中使用这些算法

解决方案可能是java控制台应用程序