Android的加密"垫块损坏"例外 [英] Android encryption "pad block corrupted" exception
问题描述
在此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屋!