Я знаю, что должен создать ключ, чтобы быть совместимым с AES. Но мне нужно сделать это способом, эквивалентным тому, что делает программа на C #. Программа на C # просто предоставляет RijndaeManaged 8-байтовый пароль, который, по-видимому, автоматически выводится в правильный ключ. Я не знаю, как это сделать на Java.

аюсь расшифровать что-то, что было зашифровано с помощью RijndaelManaged из .NET / C #, используя Java для расшифровки.

Программа на C # не моя; Я не могу изменить это, чтобы быть более совместимым. Но я знаю, как это шифрование:

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

Я не знаю, как расшифровать это на конце Java. Самая близкая вещь к полезному я нашел,этот блог, но это на реальные детали, и я не мог реализовать расшифровщик.

Изменить: я идиот, и теперь это работает.

UnicodeEncoding это UTF-16LE, а я использовал UTF-8. Переключение на правильную кодировку при подключении пароля исправило программу.

Мне также нужно было получить BouncyCastle и сделатьCipher.getInstance("AES/CBC/PKCS7Padding", "BC");

finaledit: вот код для расшифровкипо умолчанию Поток RijndaelManaged из .NET в Java, предполагая, что он был создан с использованием необработанного пароля в качестве ключа:

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)

И помните: если вы контролируете конец C #, не используйте в качестве ключа пароль без пароля!

Ответы на вопрос(1)

Ваш ответ на вопрос