Ошибка дешифрования с использованием des ede, javax.crypto.badpaddingexception - PullRequest
1 голос
/ 27 июля 2011

Я застрял на ошибке в моем коде, это не позволит мне расшифровать должным образом!Я передаю только восемь байтов данных в dataBytes и передаю 24-байтовый ключ в keyBytes.Я пытаюсь вернуть расшифрованные данные в виде массива байтов.Я продолжаю получать исключение плохого заполнения.

Спасибо!

Вот фрагмент кода:

private static byte[] DESEdeDecrypt(byte[] keyBytes, byte[] dataBytes){

    byte[] decryptedData = null;
    try{
        DESedeKeySpec keySpec = new DESedeKeySpec(keyBytes, 0); 
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
        SecretKey key = keyFactory.generateSecret(keySpec); 
        Cipher cipher = Cipher.getInstance("DESede");
        cipher.init(Cipher.DECRYPT_MODE, key);
        decryptedData = cipher.doFinal(dataBytes);
    }
    catch(Exception e){System.out.println(e);}  

    return decryptedData;

1 Ответ

1 голос
/ 27 июля 2011

Для дешифрования вы должны использовать те же отступы, что и для шифрования. Лучше установить его явно, чем полагаться на значения по умолчанию. Лучше всего также указать режим на обоих концах:

Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");

DESede медленный и морально устаревший. Вы не должны использовать его, за исключением совместимости со старым кодом. Для новой работы лучше использовать AES.

...