Android的加密"垫块损坏"例外 [英] Android encryption "pad block corrupted" exception

查看:203
本文介绍了Android的加密"垫块损坏"例外的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此code,这条线是导致异常:

In this code, this line is causing an exception:

明文= c.doFinal(Base64.de code(encryptedText,Base64.DEFAULT));

javax.crypto.BadPaddingException:垫块损坏

我得到了code来源: <一href="http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/" rel="nofollow">http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/

I got the code from: http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/

任何想法?

    private String decrypt (String encryptedText) {
        byte[] clearText = null;
        try {
            SecretKeySpec ks = new SecretKeySpec(getKey(), "AES");
            Cipher c = Cipher.getInstance("AES");
            c.init(Cipher.DECRYPT_MODE, ks);
            clearText = c.doFinal(Base64.decode(encryptedText, Base64.DEFAULT));
            return new String(clearText, "UTF-8");
        } catch (Exception e) {
            return null;
        }
    }

详细信息:我将其加密对Android以及

Details: I am encrypting it on the android as well

推荐答案

owlstead的建议是有用的,但这种情况下,当

owlstead's advice was helpful, but for this case when using the code in

注意Android开发者:保持用户数据安全 <一href="http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/" rel="nofollow">http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/

Attention Android developers: Keep user data safe http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/

我做了一些修改code,可能是其他人在未来有帮助。我完全删除了getkey方法。

I made some changes to the code that might be helpful for other people in the future. I completely deleted the getkey method.

private static String seed;

/**
 * Encrypts the text. 
 * @param clearText The text you want to encrypt
 * @return Encrypted data if successful, or null if unsucessful
 */
protected String encrypt(String clearText) {
    byte[] encryptedText = null;
    try {
        byte[] keyData = seed.getBytes();
        SecretKey ks = new SecretKeySpec(keyData, "AES");
        Cipher c = Cipher.getInstance("AES");
        c.init(Cipher.ENCRYPT_MODE, ks);
        encryptedText = c.doFinal(clearText.getBytes("UTF-8"));
        return Base64.encodeToString(encryptedText, Base64.DEFAULT);
    } catch (Exception e) {
        return null;
    }
}

/**
 * Decrypts the text
 * @param encryptedText The text you want to encrypt
 * @return Decrypted data if successful, or null if unsucessful
 */
protected String decrypt (String encryptedText) {
    byte[] clearText = null;
    try {
        byte[] keyData = seed.getBytes();
        SecretKey ks = new SecretKeySpec(keyData, "AES");
        Cipher c = Cipher.getInstance("AES");
        c.init(Cipher.DECRYPT_MODE, ks);
        clearText = c.doFinal(Base64.decode(encryptedText, Base64.DEFAULT));
        return new String(clearText, "UTF-8");
    } catch (Exception e) {
        return null;
    }
}   

这篇关于Android的加密&QUOT;垫块损坏&QUOT;例外的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆