Код указывает, что вы используете заполнение PKCS5 (с CIPHER_SPEC = "AES/CBC/PKCS5Padding"
).Это означает, что 1–16 байтов заполняются в конце ваших чистых данных перед шифрованием.Это заполнение гарантирует, что данные будут соответствовать размеру блока AES (16 байт) перед шифрованием.Заполнение построено таким образом, что легко определить, что это заполнение (количество дополненных байтов - это то, что дополняется ... например, если требуется 5 байтов, заполнение равно 05 05 05 05 05
).
Если вы расшифровываете с неправильным ключом, вы получаете случайные данные, которые в большинстве случаев также дают вам неверный отступ.Поскольку заполнение недопустимо, шифр не знает, где заканчиваются данные, и дает вам BadPaddingException
.