List of usage examples for org.bouncycastle.crypto.generators Argon2BytesGenerator Argon2BytesGenerator
public Argon2BytesGenerator()
From source file:org.springframework.security.crypto.argon2.Argon2PasswordEncoder.java
License:Apache License
@Override public String encode(CharSequence rawPassword) { byte[] salt = saltGenerator.generateKey(); byte[] hash = new byte[hashLength]; Argon2Parameters params = new Argon2Parameters.Builder(Argon2Parameters.ARGON2_id).withSalt(salt) .withParallelism(parallelism).withMemoryAsKB(memory).withIterations(iterations).build(); Argon2BytesGenerator generator = new Argon2BytesGenerator(); generator.init(params);// w w w. j a va 2 s.co m generator.generateBytes(rawPassword.toString().toCharArray(), hash); return Argon2EncodingUtils.encode(hash, params); }
From source file:org.springframework.security.crypto.argon2.Argon2PasswordEncoder.java
License:Apache License
@Override public boolean matches(CharSequence rawPassword, String encodedPassword) { if (encodedPassword == null) { logger.warn("password hash is null"); return false; }/*from w w w. j a va2s. c om*/ Argon2EncodingUtils.Argon2Hash decoded; try { decoded = Argon2EncodingUtils.decode(encodedPassword); } catch (IllegalArgumentException e) { logger.warn("Malformed password hash", e); return false; } byte[] hashBytes = new byte[decoded.getHash().length]; Argon2BytesGenerator generator = new Argon2BytesGenerator(); generator.init(decoded.getParameters()); generator.generateBytes(rawPassword.toString().toCharArray(), hashBytes); return constantTimeArrayEquals(decoded.getHash(), hashBytes); }