Example usage for org.bouncycastle.crypto.generators PKCS5S2ParametersGenerator generateDerivedParameters

List of usage examples for org.bouncycastle.crypto.generators PKCS5S2ParametersGenerator generateDerivedParameters

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.generators PKCS5S2ParametersGenerator generateDerivedParameters.

Prototype

public CipherParameters generateDerivedParameters(int keySize) 

Source Link

Document

Generate a key parameter derived from the password, salt, and iteration count we are currently initialised with.

Usage

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