【问题标题】:How to Use Salt Generated in PHP in Grails Project如何在 Grails 项目中使用 PHP 生成的 Salt
【发布时间】:2013-02-17 01:11:42
【问题描述】:

我有一个要转换为 Grails 的 PHP 应用程序。 PHP 应用程序使用盐机制来编码其所有用户的密码。

将加盐和加盐密码移入 Grails 中的(自定义)用户数据库时,我在 Grails 应用程序中无法登录。

当然,我使用的是Spring Security Core plugin,并且我已将盐添加到this tutorial 中指定的用户域类中,我在这里找到了:Grails with Spring Security Plugin and Salted Passwords

完成教程后,我可以添加一个用户并使用该用户成功登录:

[BootStrap.groovy]:
new User( username:"user", email:"user@place.com", password:"password", enabled:true).save(flush: true)

(您可能还会注意到我使用this tutorial 添加的电子邮件)

但我无法使用从 PHP 项目转移过来的任何用户登录。如果有任何帮助,他们的密码是这样编码的:

$password = "password";
$salt = bin2hex( openssl_random_pseudo_bytes( 32 ) );
$passwordSalted = hash( "sha256", $salt . $password );

【问题讨论】:

    标签: php grails spring-security salt


    【解决方案1】:

    看起来 Burt 在这里提出了他的建议:http://grails.1312388.n4.nabble.com/Spring-Security-Core-plugin-and-multiple-salt-sources-tc3638236.html#a3646256

    基本上,我已经从上面提到的教程中获得了自己的盐,我只需要使用自定义密码编码器将它与密码结合起来。

    public class CustomPasswordEncoder extends MessageDigestPasswordEncoder {
    
        public CustomPasswordEncoder() {
            super("SHA-256");
        }
    
        @Override
        protected String mergePasswordAndSalt(String password, Object salt, boolean strict) {
            if (password == null) {
                password = "";
            }
    
            if (salt == null || "".equals(salt)) {
                return password;
            }
    
            return salt + password;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多