Example usage for org.bouncycastle.crypto.generators Argon2BytesGenerator generateBytes

List of usage examples for org.bouncycastle.crypto.generators Argon2BytesGenerator generateBytes

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.generators Argon2BytesGenerator generateBytes.

Prototype

public int generateBytes(byte[] password, byte[] out) 

Source Link

Usage

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);
}