javax.crypto.BadPaddingException:填充块已损坏

javax.crypto.BadPaddingException:填充块已损坏,java,android,encryption,md5,des,Java,Android,Encryption,Md5,Des,在解密字符串值时,我们有时会看到这种BadPaddingException。并非所有时间都是完全相同的值,只是有时候。加密似乎工作得很好。。。似乎其他人有时也会遇到同样的问题,尽管他们的答案对我不起作用 private String encrypt(String value) { try { final byte[] bytes = value != null ? value.getBytes(UTF8) : new byte[0]; SecretKeyF

在解密字符串值时,我们有时会看到这种BadPaddingException。并非所有时间都是完全相同的值,只是有时候。加密似乎工作得很好。。。似乎其他人有时也会遇到同样的问题,尽管他们的答案对我不起作用

private String encrypt(String value) {
    try {
        final byte[] bytes = value != null ? value.getBytes(UTF8) : new byte[0];
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
        SecretKey key = keyFactory.generateSecret(new PBEKeySpec(SEKRIT));
        Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
        pbeCipher.init(Cipher.ENCRYPT_MODE, key, new PBEParameterSpec(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID).getBytes(UTF8), 20));
        return new String(Base64.encode(pbeCipher.doFinal(bytes), Base64.NO_WRAP), UTF8);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
private String decrypt(String value) {
    try {
        final byte[] bytes = value != null ? Base64.decode(value, Base64.DEFAULT) : new byte[0];
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
        SecretKey key = keyFactory.generateSecret(new PBEKeySpec(SEKRIT));
        Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
        pbeCipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID).getBytes(UTF8), 20));
        return new String(pbeCipher.doFinal(bytes), UTF8);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

除了非常不安全(MD5和DES,真的吗?)。你是如何传输密文的?你的代码除了非常不安全外(MD5和DES,真的吗?)。你是如何传送密文的?