Java KeyClock是否存在MessageDigestPasswordEncoder sha512?

Java KeyClock是否存在MessageDigestPasswordEncoder sha512?,java,php,symfony,keycloak,password-encryption,Java,Php,Symfony,Keycloak,Password Encryption,我正在将用户从使用Symfony制作的OAuth 2系统迁移到KeyClope。 使用加密密码在keydape中创建用户是可以的,但我找不到与我的算法等效的算法 用户创建示例: Post { "firstName": "test_encryption", "lastName":"test_encryption", "email":"jeremy.rafflin.

我正在将用户从使用Symfony制作的OAuth 2系统迁移到KeyClope。 使用加密密码在keydape中创建用户是可以的,但我找不到与我的算法等效的算法

用户创建示例:

Post
{
    "firstName": "test_encryption",
    "lastName":"test_encryption", 
    "email":"jeremy.rafflin.test@ageo.fr", 
    "credentials": [{
        "type":"password",        
        "secretData":"{\"value\":\"zeR2Uapc+a/2qD5QR56gh3mVb+KOeZ2XU+rkWMK6B5A=\",\"salt\":\"OThjajM1WnVZWlI3UzZOLk12WjJsQS9VWWZXQXp0WGZGLm5tL2hGSVFzbw==\"}​​​​​​​",
        "credentialData": "{\"algorithm\":\"sha512\",\"hashIterations\":5000}"
    }]
}
对于我正在使用的PHP中的当前加密。 这相当于:

$password = 'toto';
$salt = '1234';
$salted = $password.'{'.$salt.'}';
$digest = hash('sha512', $salted, true);

for ($i=1; $i<5000; $i++) {
    $digest = hash('sha512', $digest.$salted, true);
}

$encodedPassword = base64_encode($digest);
$password='toto';
$salt='1234';
$salted=$password.{.$salt.};
$digest=hash('sha512',$salted,true);
对于($i=1;$i)
我的算法是否存在于KeyClope中,或者我必须创建一个自定义算法
凭证算法

从:

以下是对每种保单类型的解释:

哈希算法

密码不是以明文形式存储的,而是 使用标准散列算法进行散列,然后再存储或删除 已验证。唯一可用的内置和默认算法是 PBKDF2.

尽管如此,KeyClope允许您通过利用

public class PasswordEncoderFactories {
    ...
    public static PasswordEncoder createDelegatingPasswordEncoder() {
        String encodingId = "bcrypt"; 
        Map<String, PasswordEncoder> encoders = new HashMap<>();
        encoders.put(encodingId, new BCryptPasswordEncoder()); 
        encoders.put("ldap", new LdapShaPasswordEncoder());
        encoders.put("MD4", new Md4PasswordEncoder());
        encoders.put("MD5", new MessageDigestPasswordEncoder("MD5"));
        encoders.put("noop", NoOpPasswordEncoder.getInstance());
        encoders.put("pbkdf2", new Pbkdf2PasswordEncoder());
        encoders.put("scrypt", new SCryptPasswordEncoder());
        encoders.put("SHA-1", new MessageDigestPasswordEncoder("SHA-1"));
        encoders.put("SHA-256", new MessageDigestPasswordEncoder("SHA-256"));
        encoders.put("sha256", new StandardPasswordEncoder());

        return new DelegatingPasswordEncoder(encodingId, encoders);
    }
    ...
}