Descifrar bytes cifrados por RijndaelManaged de .NET usando Java

stoy tratando de descifrar algo, que se cifró con RijndaelManaged de .NET / C #, usando Java para descifrar.

El programa C # no es mío; No puedo cambiarlo para que sea más interoperable. Pero sé cómo se encripta:

byte[] bytes = new UnicodeEncoding().GetBytes(password); // edit: built-in is 8chars
FileStream fileStream = new FileStream(outputFile, FileMode.Create);
RijndaelManaged rijndaelManaged = new RijndaelManaged();
CryptoStream cryptoStream = new CryptoStream((Stream) fileStream,
    rijndaelManaged.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write);

No sé cómo descifrar esto en el extremo de Java. Lo más cercano a lo útil que he encontrado esesta publicación de blog, pero es ligero en detalles reales y no pude implementar un descifrador.

Edit: Soy un idiota y ahora lo tengo funcionando.

UnicodeEncoding es UTF-16LE, mientras estaba usando UTF-8. Cambiar a la codificación adecuada al conectar la contraseña ha reparado el programa.

También necesitaba obtener BouncyCastle y hacerCipher.getInstance("AES/CBC/PKCS7Padding", "BC");

finaledit: Aquí está el código para descifrar undefectecuencia @ RijndaelManaged desde .NET en Java, suponiendo que se haya creado utilizando una contraseña sin formato como clave:

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
String password = "kallisti"; // only 8, 12, or 16 chars will work as a key
byte[] key = password.getBytes(Charset.forName("UTF-16LE"));
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, "AES"),
    new IvParameterSpec(key));
return cipher; // then use CipherInputStream(InputStream, Cipher)

Y recuerda: si controlas el final de C #, ¡no uses una contraseña subestimada como tu clave!

Respuestas a la pregunta(1)

Su respuesta a la pregunta