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,
- затем отправка данных.
Очевидно, обратная последовательность при получении данных:
- первое декодирование UU/Base64/Hex,
- затем расшифровать,
- затем используйте данные.
person
Bandi-T
schedule
22.01.2010