Descriptografar bytes criptografados pelo Rijndael do .NETManaged using Java

Estou tentando descriptografar algo, que foi criptografado usando o RijndaelManaged do .NET / C #, usando Java para descriptografa

O programa C # não é meu; Não posso alterá-lo para ser mais interoperável. Mas eu sei como é criptografar:

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);

Não sei como descriptografar isso no final do Java. A coisa mais próxima de útil que encontrei éesta publicação no blog, mas são poucos os detalhes reais e não pude implementar um decodificado

Edit: Eu sou um idiota e agora ele está funcionand

UnicodeEncoding é UTF-16LE, enquanto eu estava usando UTF-8. A mudança para a codificação adequada ao conectar a senha corrigiu o programa.

Eu também precisava obter o BouncyCastle e fazerCipher.getInstance("AES/CBC/PKCS7Padding", "BC");

finalinal: Aqui está o código para descriptografar umpadrã RijndaelFluxo gerenciado do .NET em Java, assumindo que ele foi criado usando uma senha bruta como chave:

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)

E lembre-se: se você controla o fim de C #, não use uma senha derivada como chav

questionAnswers(1)

yourAnswerToTheQuestion