Übersetzung von Ruby-Verschlüsselungscode nach Java
Ich habe einen alten Code in Ruby, der die Verschlüsselung mit OpenSSL durchführt
Ich möchte dies jedoch in Java übersetzen und bin verloren. Bisher ist mein größter Blocker herauszufinden, wie ich die IV basierend auf diesem Code generieren kann. Jede Hilfe wäre sehr dankbar
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
BEARBEITEN
Zur Verdeutlichung möchte ich dazu Java Crypto verwenden. Dies ist der Code, den ich mir bisher ausgedacht habe:
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();
aber"PBKDF2WithMD5And256AES-CBC"
hat keinen Provider und ich bekomme NoSuchAlgorithm Ausnahme.
java.security.NoSuchAlgorithmException: PBKDF2WithMD5And256AES-CBC SecretKeyFactory not available
Auch das Salz daspkcs5_keyivgen
verwendet standardmäßig null !! Ich bin mir nicht sicher, ob Java die Verwendung eines Nullsalzes zulässt.
Wie kann ich die richtige IV generieren?