BouncyCastleAesBytesEncryptor(String password, CharSequence salt, BytesKeyGenerator ivGenerator) { if (ivGenerator.getKeyLength() != 16) { throw new IllegalArgumentException("ivGenerator key length != block size 16"); } this.ivGenerator = ivGenerator; PBEParametersGenerator keyGenerator = new PKCS5S2ParametersGenerator(); byte[] pkcs12PasswordBytes = PBEParametersGenerator .PKCS5PasswordToUTF8Bytes(password.toCharArray()); keyGenerator.init(pkcs12PasswordBytes, Hex.decode(salt), 1024); this.secretKey = (KeyParameter) keyGenerator.generateDerivedParameters(256); } }
private static byte[] decryptPBKDF2WithBC(char[] password, byte[] data, byte[] salt, byte[] iv) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { PBEParametersGenerator generator = new PKCS5S2ParametersGenerator(); generator.init(PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(password), salt,CryptographicToolBox.CRYPTO_ITERATIONS); KeyParameter params = (KeyParameter)generator.generateDerivedParameters(CryptographicToolBox.KEY_SIZE); byte[] endcoded = params.getKey(); SecretKey key = new SecretKeySpec(endcoded, "AES"); Cipher ciph = Cipher.getInstance("AES/CBC/PKCS5Padding"); ciph.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv); return ciph.doFinal(data); }
final byte[] pwdBytes = PBEParametersGenerator.PKCS12PasswordToBytes(pwdChars); paranoidWipe(pwdChars); gen.init(pwdBytes, salt, ITERATION_COUNT); final ParametersWithIV aesCtrParam = (ParametersWithIV) gen.generateDerivedParameters( keyStrengthBits, AES_BLOCK_SIZE_BITS); final CipherParameters sha256HMmacParam = gen.generateDerivedMacParameters(keyStrengthBits); paranoidWipe(pwdBytes);
private static byte[] SingleIterationPBKDF2(byte[] P, byte[] S, int dkLen) { PBEParametersGenerator pGen = new PKCS5S2ParametersGenerator(new SHA256Digest()); pGen.init(P, S, 1); KeyParameter key = (KeyParameter)pGen.generateDerivedMacParameters(dkLen * 8); return key.getKey(); }
MacOutputStream mOut = new MacOutputStream(hMac); PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); pbeGen.init(passKey, salt, iterationCount); hMac.init(pbeGen.generateDerivedMacParameters(hMac.getMacSize())); hMac.init(pbeGen.generateDerivedMacParameters(hMac.getMacSize() * 8));
private static byte[] convertPassword(int type, PBEKeySpec keySpec) { byte[] key; if (type == PKCS12) { key = PBEParametersGenerator.PKCS12PasswordToBytes(keySpec.getPassword()); } else if (type == PKCS5S2_UTF8 || type == PKCS5S1_UTF8) { key = PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(keySpec.getPassword()); } else { key = PBEParametersGenerator.PKCS5PasswordToBytes(keySpec.getPassword()); } return key; } }
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); }
/** * Initialise - note the iteration count for this algorithm is fixed at 1. * * @param password password to use. * @param salt salt to use. */ public void init( byte[] password, byte[] salt) { super.init(password, salt, 1); }
public byte[] convert(char[] password) { return PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(password); } },
/** {@inheritDoc} */ protected byte[] toBytes(final char[] password) { return PBEParametersGenerator.PKCS12PasswordToBytes(password); } }
private static int roundsFromPassword(final Digest digest, final byte[] pwBytes, final byte[] saltBytes, final int pwRoundBytes) { final PBEParametersGenerator generator = getGenerator(digest, pwBytes, saltBytes, 1); // limit key to 31 bits, we don't want negative numbers final CipherParameters cp = generator.generateDerivedMacParameters(Math.min(pwRoundBytes * 8, 31)); if (cp instanceof KeyParameter) { KeyParameter kp = (KeyParameter) cp; // get derived key portion final String key = asHex(kp.getKey()); return Integer.valueOf(key, 16).intValue(); } throw new RuntimeCryptoException("Invalid CipherParameter: " + cp); }
byte[] salt = new byte[8]; Arrays.fill(salt, (byte)1); PBEParametersGenerator pGen = new PKCS5S2ParametersGenerator(new SHA256Digest()); pGen.init(Strings.toByteArray("password"), salt, 2048); KeyParameter key = (KeyParameter)pGen.generateDerivedParameters(256); System.out.println(Hex.toHexString(key.getKey()));
final char[] passwd = param.getReadPassword(0 != lastTry); assert null != passwd; final byte[] pass = PKCS12PasswordToBytes(passwd); for (int i = passwd.length; --i >= 0; ) // nullify password parameter passwd[i] = 0; gen.init(pass, salt, iCount); aesCtrParam = (ParametersWithIV) gen.generateDerivedParameters( keyStrengthBits, AES_BLOCK_SIZE_BITS); sha256MacParam = (KeyParameter) gen.generateDerivedMacParameters( keyStrengthBits); paranoidWipe(pass);
private static byte[] SingleIterationPBKDF2(byte[] P, byte[] S, int dkLen) { PBEParametersGenerator pGen = new PKCS5S2ParametersGenerator(new SHA256Digest()); pGen.init(P, S, 1); KeyParameter key = (KeyParameter) pGen.generateDerivedMacParameters(dkLen * 8); return key.getKey(); }
if (password != null && password.length != 0) byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); pbeGen.init(passKey, salt, iterationCount); macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize()); macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize() * 8);
return PBEParametersGenerator.PKCS12PasswordToBytes(pbeKeySpec.getPassword()); return PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(pbeKeySpec.getPassword()); return PBEParametersGenerator.PKCS5PasswordToBytes(pbeKeySpec.getPassword());
/** {@inheritDoc} */ protected byte[] toBytes(final char[] password) { return PBEParametersGenerator.PKCS5PasswordToBytes(password); } }
/** * Initialise - note the iteration count for this algorithm is fixed at 1. * * @param password password to use. * @param salt salt to use. */ public void init( byte[] password, byte[] salt) { super.init(password, salt, 1); }
private static byte[] stringToUTF8Bytes(final String s) { return PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(s.toCharArray()); }
public byte[] convert(char[] password) { return PBEParametersGenerator.PKCS12PasswordToBytes(password); } };