Инициализация может быть выполнена с использованием экземпляра 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 для достижения эквивалентной функциональности?