Tłumaczenie kodu szyfrowania Ruby na Javę
Mam rubinowy kod starszego typu, który wykonuje szyfrowanie przy użyciu OpenSSL
Chciałbym jednak przetłumaczyć to w Javie i zgubiłem się. jak dotąd mój największy bloker zastanawia się, jak wygenerować IV na podstawie tego kodu. Każda pomoc byłaby bardzo mile widziana
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
EDYTOWAĆ
Aby wyjaśnić, chciałbym użyć do tego Crypto Java. Oto kod, który do tej pory wymyśliłem:
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();
ale"PBKDF2WithMD5And256AES-CBC"
nie ma żadnego dostawcy i otrzymuję wyjątek NoSuchAlgorithm.
java.security.NoSuchAlgorithmException: PBKDF2WithMD5And256AES-CBC SecretKeyFactory not available
Także sól, którapkcs5_keyivgen
domyślnie używa wartości null !! Nie jestem pewien, czy Java pozwala mi używać soli zerowej.
Jak mogę wygenerować poprawny IV?