Я использую приведенный ниже код (snippets) для шифрования личных данных пользователей для хранения в базе данных, а затем расшифровать их, чтобы они могли его просматривать.Я получаю BadPaddingException в моем методе дешифрования
Cipher cipher = Cipher.getInstance("DESede");
byte[] bytes = cipher.doFinal(value.getBytes());
String encrypted = new String(bytes);
Эта строка затем хранится в базе данных под колонкой (ами) VARCHAR
Для расшифровки:
Cipher cipher = Cipher.getInstance("DESede");
byte[] bytes = cipher.doFinal(value.getBytes());
String decrypted = new String(bytes);[code]
Теперь, казалось бы, случайно я получаю случайные
javax.crypto.BadPaddingException: Given final block not properly padded
Пара вещей ... Во-первых, похоже, что вы шифруете пароли, что является очень плохой идеей. Во-вторых, ваш код небезопасен из-за использования режима ECB. Используйте GCM или CBC с HMAC. Кроме того, вы определяете шифр для использования PKCS5Padding, а затем пытаетесь вручную поместить результат с символом 0 ...? Зачем? Это не нужно. –
Также не используйте DES/3DES, используйте AES для новой работы. – zaph