C # AES шифруется с помощью режима CFB NoPadding в Java

1

Я шифрую данные с помощью алгоритма AES/CFB/NoPadding в С#, но я не могу расшифровать с помощью одного и того же режима в java.. Я получил другой результат.

Режим CFB-NoPadding позволяет выводить любые данные в байтах и данные одинаковой длины.

Я могу сделать это при использовании режима заполнения CBC.. но он не работает в CFB без режима заполнения.

Может кто-нибудь мне помочь?

С# шифровать Код:

_assistantRM.Mode = CipherMode.CFB;
_assistantRM.Padding = PaddingMode.None;
_assistantRM.FeedbackSize = 8;
_assistantRM.IV = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF }; 
_assistantRM.Key = _assitantKey;

Код расшифровки Java:

SecretKeySpec sk = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, sk, new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF });
byte[] result = cipher.doFinal(bytes);
return result;
  • 0
    8 бит для размера обратной связи в c # кажутся очень маленькими. Обычный режим CFB использует один шифровальный блок AFAIR, что означает 128 бит для AES.
  • 0
    Но в режиме CBF nopadding разрешено использовать 8-битный FeedbackSize. Есть ли другой режим для достижения изометрического шифрования с более эффективным и надежным?
Теги:
encryption
aes

1 ответ

1
Лучший ответ

В строке алгоритма в Java существует малоизвестный коммутатор. Попробуйте "AES/CFB8/NoPadding" (обратите внимание на 8 символов за B). Он настраивает количество бит, используемых в качестве обратной связи от зашифрованного блока.

Обратите внимание, что обычно восстановление ошибок CFB больше не используется. Гораздо эффективнее использовать полные 128 бит обратной связи. Или вы можете использовать другой режим полностью, например, шифрование в режиме CTR или GCM.

  • 0
    Спасибо Мартен, это сработало ~~~ .. я получил тот же результат ..
  • 0
    Другой вопрос, я хочу использовать метод шифрования той же длины. это означает входные байты x и выходные байты x. так, только режим cbf nopadding может сделать это. другие алгоритмы изменят мою длину входных данных на фиксированные 16 или 32 байта. Любой другой рекомендовать? : P, еще раз спасибо ~~
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню