List of usage examples for org.bouncycastle.crypto.generators Argon2BytesGenerator generateBytes
public int generateBytes(byte[] password, byte[] out)
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);/* ww w . j av a 2 s. c o 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 av a 2 s . c o m 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); }