OpenSSLを使用して暗号化を行うRubyのレガシーコードがありますが、
これをJavaで翻訳したいのですが、迷っています。これまでのところ、私の最大の障害は、このコードに基づいて IV を生成する方法を考え出すことです。どんな助けでも大歓迎です
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
EDIT
明確にするために、これには Java Crypto を使用したいと思います。これは私がこれまでに思いついたコードです:
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();
プロバイダーが"PBKDF2WithMD5And256AES-CBC"
なく、 NoSuchAlgorithm 例外が発生します。
java.security.NoSuchAlgorithmException: PBKDF2WithMD5And256AES-CBC SecretKeyFactory not available
pkcs5_keyivgen
また、デフォルトで使用するソルトはnullです!! Java で null ソルトを使用できるかどうかはわかりません。
正しい IV を生成するにはどうすればよいですか?