Мое чтение документа говорит о том, что AESEngine, FastEngine и LightEngine имеют различный компромисс памяти и скорости. Вам нужно было бы проверить его самостоятельно, чтобы определить, актуальны ли эти компромиссы в вашем сценарии.
вам нужно прочитать о различных режимах AES. Различные режимы имеют разные сильные стороны и атрибуты, которые могут быть более или менее применимы или желательны в зависимости от вашего сценария. Таким образом, ответ на ваш вопрос «это зависит».
нет. вам понадобится IV. Что касается соли, она обычно используется с парольной фразой для генерации фактического ключа шифрования и IV, часто через PKBDF2. Это выходит за рамки AES, но это типичное использование.
Наконец, вы не спросили, но .... почему вы переносите этот код на C #? .NET имеет встроенное шифрование AES. Вам не нужно ничего переносить, вы можете просто использовать библиотеку базовых классов .NET. Просто убедитесь, что вы используете одинаковый размер ключа и режим, и убедитесь, что ваш ключ + iv одинаков для каждой стороны, и классы .NET BCL AES будут взаимодействовать с компонентом BouncyCastle для J2ME.