BadPaddingException при шифровании / дешифровании - PullRequest
0 голосов
/ 21 марта 2019

У меня есть этот класс:

public class KeyCrypter {

private SecureRandom secRandom;
private static final String ALGORITHM = "DESede"; //with "PBEWithMD5AndDES" say 'KeyGenerator PBEWithMD5AndDES implementation not found'
private static KeyCrypter mInstance = null;


public static KeyCrypter getInstance() {

    if (mInstance == null) {
        mInstance = new KeyCrypter();
    }
    return mInstance;
}

protected byte[] encrypt(String str) {
    try {
        secRandom = new SecureRandom();
        KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
        keyGenerator.init(secRandom);
        SecretKey key = keyGenerator.generateKey();

        Cipher encrypter = Cipher.getInstance(ALGORITHM);
        encrypter.init(Cipher.ENCRYPT_MODE, key);
        byte[] utf8 = str.getBytes(StandardCharsets.UTF_8);
        byte[] enc = encrypter.doFinal(utf8);
        return Base64.encode(enc, Base64.NO_PADDING);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;

}

protected String decrypt(String str) {
    try {
        secRandom = new SecureRandom();
        KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
        keyGenerator.init(secRandom);
        SecretKey key = keyGenerator.generateKey();
        Cipher decrypter = Cipher.getInstance(ALGORITHM);
        decrypter.init(Cipher.DECRYPT_MODE, key);
        byte[] dec = Base64.decode(str.getBytes(), Base64.NO_PADDING);
        byte[] utf8 = decrypter.doFinal(dec);
        return new String(utf8, StandardCharsets.UTF_8);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

}

Если вы посмотрите на этот простой метод, я хочу зашифровать только строку, а затем расшифровать ее, но каждый раз и с другим «алгоритмом» яесть «BadPaddingException».Кто-нибудь, помогите мне, пожалуйста.

...