Инициализация может быть выполнена с использованием экземпляра IBlockCipher для получения размера блока. Пример ниже inits с пустым IV, используя 'Cipher', который является экземпляром AESEngine .:

лизую что-то в C #, для которого у меня есть отдельная спецификация и достаточно четкое понимание того, что мне нужно делать, но в то же время в качестве справки у меня есть реализация Java, и я хотел бы следовать реализации Java в этом случае как близко, как я могу.

Код включает в себя зашифрованный поток и источник JavaВот Соответствующие строки здесь:

  private final StreamCipher enc;
...
  BlockCipher cipher;
  enc = new SICBlockCipher(cipher = new AESEngine());
  enc.init(true, new ParametersWithIV(new KeyParameter(secrets.aes), new byte[cipher.getBlockSize()]));
...
...
byte[] ptype = RLP.encodeInt((int) frame.type); //Result can be a single byte long
...
...
enc.processBytes(ptype, 0, ptype.length, buff,, 0);
out.write(buff, 0, ptype.length); //encrypt and write a single byte from the SICBlockCipher stream

Выше Java BouncyCastleSicBlockCipher этоStreamCipher и позволяет обрабатывать одно или небольшое количество байтов меньше, чем размер блока Aes.

В C # BouncyCastleSicBlockCipher только предлагает ProcessBlock и BufferedBlockCipher, кажется, не предлагает способ гарантировать вывод, используя ProcessBytes.

Что мне нужно сделать с библиотекой C # BouncyCastle для достижения эквивалентной функциональности?

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

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