Traducir el código de cifrado de Ruby a Java
Tengo un código heredado en ruby que realiza el cifrado mediante OpenSSL
Sin embargo, me gustaría traducir esto en Java y estoy perdido. Hasta ahora mi bloqueador más grande está descubriendo cómo generar el IV basado en este código. Cualquier ayuda sería apreciada grandemente
def func_enc(data, key)
cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
cipher.encrypt
cipher.pkcs5_keyivgen(key)
cipher.update(data)
encrypted_data << cipher.final
return encryptedData
end
EDITAR
Solo para aclarar, me gustaría usar Java Crypto para esto. Este es el código que se me ocurrió hasta ahora:
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithMD5And256AES-CBC");
KeySpec spec = new PBEKeySpec("Password".toCharArray(), null, 2048, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);
AlgorithmParameters params = cipher.getParameters();
byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
pero"PBKDF2WithMD5And256AES-CBC"
no tiene ningún proveedor y obtengo la excepción NoSuchAlgorithm.
java.security.NoSuchAlgorithmException: PBKDF2WithMD5And256AES-CBC SecretKeyFactory not available
También la sal quepkcs5_keyivgen
Usos por defecto es nulo !! No estoy seguro de si Java me permite usar un salt nulo.
¿Cómo puedo generar el IV correcto?