Beispiel #1
0
  static SecretKey generateSecretKeyForPKCS5Scheme2(
      String algorithm, char[] password, byte[] salt, int iterationCount) {
    PBEParametersGenerator generator = new PKCS5S2ParametersGenerator();

    generator.init(PBEParametersGenerator.PKCS5PasswordToBytes(password), salt, iterationCount);

    return new SecretKeySpec(
        ((KeyParameter) generator.generateDerivedParameters(PEMUtilities.getKeySize(algorithm)))
            .getKey(),
        algorithm);
  }
Beispiel #2
0
  private static SecretKey getKey(
      char[] password, String algorithm, int keyLength, byte[] salt, boolean des2) {
    OpenSSLPBEParametersGenerator pGen = new OpenSSLPBEParametersGenerator();

    pGen.init(PBEParametersGenerator.PKCS5PasswordToBytes(password), salt);

    KeyParameter keyParam;
    keyParam = (KeyParameter) pGen.generateDerivedParameters(keyLength * 8);
    byte[] key = keyParam.getKey();
    if (des2 && key.length >= 24) {
      // For DES2, we must copy first 8 bytes into the last 8 bytes.
      System.arraycopy(key, 0, key, 16, 8);
    }
    return new javax.crypto.spec.SecretKeySpec(key, algorithm);
  }