Blowfish имеет размер блока 64 бита, то есть 8 байтов. AES имеет размер блока 128 битов, то есть 16 байтов.
Размер блока подразумевает, что он может делать только блоки такого размера. Таким образом, что-то с размером блока 8 байтов не может сделать 7,6,5,4,3,2,1 байтов.
Если у вас меньше необходимого количества битов или байтов (здесь 8 и 16 байтов), вы должны дополнить теми, у которых есть что-то, чтобы получить блок длиной 8/16 байт. (Заполнение по-английски означает, что вы должны добавлять неиспользуемые биты / байты - иногда контент, предписанный протоколом / алгоритмом, иногда контент не имеет значения), пока у вас не появится что-то нужного размера.)
Обе ошибки жалуются на плохое заполнение. Так что я догадываюсь, что вы не передаете правильный размер (длину) данных в алгоритмы шифрования / дешифрования. Проверьте свою документацию, чтобы увидеть, принимают ли они в качестве входных данных:
- ровно один блок (8 или 16 байтов здесь)
- точное кратное размеру блока (= в этом случае вам придется выполнять заполнение)
- произвольный размер данных (= вам не нужно выполнять заполнение - но тогда почему вы получили ошибку для начала?)
Есть ли вероятность, что вы случайно сделали кодировку UU / Base64 / Hex до этапа шифрования?
Вы должны:
- сначала сделайте шифрование,
- затем UU / Base64 / Hex Encoding,
- затем отправка данных.
Очевидно, обратная последовательность после получения данных:
- первое UU / Base64 / шестнадцатеричное декодирование,
- затем расшифровать,
- затем используйте данные.