List of usage examples for org.bouncycastle.crypto.generators SCrypt generate
public static byte[] generate(byte[] P, byte[] S, int N, int r, int p, int dkLen)
From source file:org.springframework.security.crypto.scrypt.SCryptPasswordEncoder.java
License:Apache License
private boolean decodeAndCheckMatches(CharSequence rawPassword, String encodedPassword) { String[] parts = encodedPassword.split("\\$"); if (parts.length != 4) { return false; }/*from w w w . java 2 s. c o m*/ long params = Long.parseLong(parts[1], 16); byte[] salt = decodePart(parts[2]); byte[] derived = decodePart(parts[3]); int cpuCost = (int) Math.pow(2, params >> 16 & 0xffff); int memoryCost = (int) params >> 8 & 0xff; int parallelization = (int) params & 0xff; byte[] generated = SCrypt.generate(Utf8.encode(rawPassword), salt, cpuCost, memoryCost, parallelization, keyLength); if (derived.length != generated.length) { return false; } int result = 0; for (int i = 0; i < derived.length; i++) { result |= derived[i] ^ generated[i]; } return result == 0; }
From source file:org.springframework.security.crypto.scrypt.SCryptPasswordEncoder.java
License:Apache License
private String digest(CharSequence rawPassword, byte[] salt) { byte[] derived = SCrypt.generate(Utf8.encode(rawPassword), salt, cpuCost, memoryCost, parallelization, keyLength);// w w w . java 2 s . co m String params = Long .toString(((int) (Math.log(cpuCost) / Math.log(2)) << 16L) | memoryCost << 8 | parallelization, 16); StringBuilder sb = new StringBuilder((salt.length + derived.length) * 2); sb.append("$").append(params).append('$'); sb.append(encodePart(salt)).append('$'); sb.append(encodePart(derived)); return sb.toString(); }
From source file:org.xwiki.crypto.password.internal.kdf.BcScryptKDF.java
License:Open Source License
@Override public KeyParameter derive(byte[] password) { return new KeyParameter(SCrypt.generate(password, parameters.getSalt(), parameters.getCostParameter(), parameters.getBlockSize(), parameters.getParallelizationParameter(), getKeySize())); }
From source file:org.xwiki.crypto.password.internal.kdf.BcScryptKDF.java
License:Open Source License
@Override public KeyWithIVParameters derive(byte[] password, int ivSize) { int keySize = getKeySize(); byte[] keyIV = SCrypt.generate(password, parameters.getSalt(), parameters.getCostParameter(), parameters.getBlockSize(), parameters.getParallelizationParameter(), keySize + ivSize); byte[] key = new byte[keySize]; System.arraycopy(keyIV, 0, key, 0, keySize); byte[] iv = new byte[ivSize]; System.arraycopy(keyIV, keySize, iv, 0, ivSize); return new KeyWithIVParameters(key, iv); }
From source file:xyz.jamescarroll.genipass.Crypto.ECKey.java
License:Open Source License
/** * Calculates the master extended private key using SCrypt. * * @param u RIPEMD-160 hash of the username. * @param p RIPEMD-160 hash of the master password. * @return the SCrypt digest/*from w w w.j a v a 2 s . c o m*/ */ private static byte[] calcMasterExtPrivateKey(BigInteger u, BigInteger p) { return SCrypt.generate((u.toString() + p.toString()).getBytes(), (u.xor(p)).toByteArray(), (int) Math.pow(2, 16), 8, 2, 64); }