我有一个MySQL数据库,使用MySQL的PASSWORD()函数存储密码。从我了解到的信息(并验证自己确保其适用于我的MySQL版本)来看,MySQL的哈希函数是双重SHA1哈希,第一个结果在进行哈希之前会被转换为十六进制。参考链接:http://www.palominodb.com/blog/2011/12/04/hashing-algorithm-mysql-password。请注意,本文中保留了HTML标签,但不包括解释。
SELECT PASSWORD("this_is_a_random_string") as 'pass';
pass: *12E76A751EFA43A177049262A2EE36DA327D8E50
SELECT concat('*', UPPER(SHA1(UNHEX(SHA1("this_is_a_random_string"))))) as 'pass';
pass: *12E76A751EFA43A177049262A2EE36DA327D8E50
我希望使用SpringSecurity的ShaPasswordEncoder来让Spring能够处理这些哈希值。
除了子类化自己的PasswordEncoder并使用ShaPasswordEncoder来构建上述SQL中显示的处理步骤之外,ShaPasswordEncoder本身是否有一种标准的方式来设置自己以与MySQL的PASSWORD函数配合使用?