List of usage examples for org.bouncycastle.crypto.generators PKCS5S2ParametersGenerator generateDerivedParameters
public CipherParameters generateDerivedParameters(int keySize)
From source file:com.github.horrorho.inflatabledonkey.cache.StreamCryptorPBKDF2.java
License:Open Source License
@Override public byte[] apply(byte[] password, byte[] salt) { PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(digests.get()); generator.init(password, salt, iterations); return ((KeyParameter) generator.generateDerivedParameters(keyLength * 8)).getKey(); }
From source file:com.github.horrorho.inflatabledonkey.crypto.PBKDF2.java
License:Open Source License
public static byte[] generate(Digest digest, byte[] password, byte[] salt, int iterations, int lengthBits) { PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(digest); generator.init(password, salt, iterations); return ((KeyParameter) generator.generateDerivedParameters(lengthBits)).getKey(); }
From source file:de.burlov.amazon.s3.dirsync.DirSync.java
License:Apache License
private byte[] generatePbeKey(char[] password) { PKCS5S2ParametersGenerator pgen = new PKCS5S2ParametersGenerator(); pgen.init(PKCS5S2ParametersGenerator.PKCS5PasswordToBytes(password), salt, ITERATION_COUNT); CipherParameters params = pgen.generateDerivedParameters(256); byte[] ret = ((KeyParameter) params).getKey(); return ret;//from www . jav a2 s . c om }
From source file:foam.util.Password.java
License:Open Source License
/** * Helper function to hash the password that takes in the salt, key size, and number of iterations * @param password password to has//from w ww . jav a 2s. c om * @param salt random salt * @param keySize key size * @param iterations number of iterations * @return hashed password containing the salt. Format salt:hash */ private static String hash(String password, byte[] salt, int keySize, int iterations) { PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(); generator.init(PBEParametersGenerator.PKCS5PasswordToBytes(password.toCharArray()), salt, iterations); byte[] key = ((KeyParameter) generator.generateDerivedParameters(keySize)).getKey(); return String.format("%s:%s", encode(salt), encode(key)); }
From source file:net.nharyes.secrete.curve.Curve25519PrivateKey.java
License:Open Source License
private static byte[] deriveKey(char[] password, byte[] salt) throws UnsupportedEncodingException { // generate key using PBKDF2 PKCS5S2ParametersGenerator gen = new PKCS5S2ParametersGenerator(new SHA512Digest()); gen.init(new String(password).getBytes("UTF-8"), salt, PBKDF2_ITERATIONS); return ((KeyParameter) gen.generateDerivedParameters(AES_KEY_SIZE_BITS)).getKey(); }
From source file:net.nharyes.secrete.curve.TestCurve25519PrivateKey.java
License:Open Source License
@Test public void testPBKDF() throws Exception { Security.addProvider(new BouncyCastleProvider()); Random r = new Random(); char[] cPassword = "ThePa55wordToU5e".toCharArray(); byte[] salt = new byte[64]; r.nextBytes(salt);/*w w w .ja v a2s . c om*/ SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec keyspec = new PBEKeySpec(cPassword, salt, 5000, 256); Key key = factory.generateSecret(keyspec); byte[] k1 = key.getEncoded(); factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1", "BC"); key = factory.generateSecret(keyspec); byte[] k2 = key.getEncoded(); assertArrayEquals(k1, k2); PKCS5S2ParametersGenerator gen = new PKCS5S2ParametersGenerator(new SHA1Digest()); gen.init(new String(cPassword).getBytes("UTF-8"), salt, 5000); byte[] k3 = ((KeyParameter) gen.generateDerivedParameters(256)).getKey(); assertArrayEquals(k1, k3); assertArrayEquals(k2, k3); }
From source file:org.albertschmitt.crypto.AESService.java
License:Open Source License
/** * Generate an AES key. A key generated by this method would typically be * encrypted using RSA and sent to the recipient along with data that was * encrypted with the key. The recipient would then decrypt the key using * RSA then use the key to decrypt the data. * * @see #getAesKey()//w w w .j a va 2 s .c o m */ public void generateKey() { PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(); SecureRandom random = new SecureRandom(); byte[] password = new byte[SALT_SIZE]; random.nextBytes(password); generator.init(password, generateSalt(), 20000); aes_key = (KeyParameter) generator.generateDerivedParameters(keysize.getKeySize()); }
From source file:org.albertschmitt.crypto.AESService.java
License:Open Source License
/** * Generate an AES key using a given password and salt. * * @param password The password to be used to create the key. * @param salt The 32 byte long array to be used to create the key. * @see #generateSalt()//from w w w. ja va 2s . c o m * @see #getAesKey() */ public void generateKey(char[] password, byte[] salt) { PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(); byte[] passwordBytes = PKCS5S2ParametersGenerator.PKCS5PasswordToUTF8Bytes(password); generator.init(passwordBytes, salt, 20000); aes_key = (KeyParameter) generator.generateDerivedParameters(keysize.getKeySize()); }
From source file:org.apache.cloudstack.server.auth.PBKDF2UserAuthenticator.java
License:Apache License
public String encode(String password, byte[] salt, int rounds) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeySpecException { PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(); generator.init(PBEParametersGenerator.PKCS5PasswordToBytes(password.toCharArray()), salt, rounds); return format("%s:%s:%d", encode(salt), encode(((KeyParameter) generator.generateDerivedParameters(s_keylen)).getKey()), rounds); }
From source file:org.apache.cxf.rs.security.jose.jwe.PbesHmacAesWrapKeyEncryptionAlgorithm.java
License:Apache License
static byte[] createDerivedKey(String keyAlgoJwt, int keySize, byte[] password, byte[] saltInput, int pbesCount) { byte[] saltValue = createSaltValue(keyAlgoJwt, saltInput); Digest digest = null;/* w w w . ja v a 2s. c o m*/ int macSigSize = PBES_HMAC_MAP.get(keyAlgoJwt); if (macSigSize == 256) { digest = new SHA256Digest(); } else if (macSigSize == 384) { digest = new SHA384Digest(); } else { digest = new SHA512Digest(); } PKCS5S2ParametersGenerator gen = new PKCS5S2ParametersGenerator(digest); gen.init(password, saltValue, pbesCount); return ((KeyParameter) gen.generateDerivedParameters(keySize * 8)).getKey(); }