在我的项目中,我正在研究AES加密和Decryption.i已使用此算法来加密和解密一个字符串,并将字符串存储在sq-lite数据库中。现在,我从数据库中获得加密的密钥,尝试解密它,但它示出了一个异常(垫座损坏)。我是通过使用AES解密不起作用
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len/2];
for (int i = 0; i < len; i += 2) {
data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));}
return data;
}
和得到正确的字节数,但将所述加密串入字节,而转换成字符串它显示“垫块损坏”。 在此先感谢。如果找到答案,真的很感激。 我的代码是
dh=new data_helper(Resy.this);
mac_db=dh.getData();
// getdata=mac_db.toString();
KeyGenerator kgen;
try {
kgen = KeyGenerator.getInstance("AES");
kgen.init(128); // 192 and 256 bits may not be available
// Generate the secret key specs.
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
getdata=mac_db.toString();
// byte g1[]=getdata.getBytes();
// System.out.println(g1);
byte b[]=hexStringToByteArray(getdata);
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] m1=cipher.doFinal(b); // here pad block corrupt exception came.
String originalString_mac = new String(original_macadress);
Toast.makeText(getApplicationContext(),"Original : " +originalString_mac + " " + asHex(original_macadress) , Toast.LENGTH_LONG).show();
零接受拉曼,先接受你以前的问题的一些答案 - 答案很容易,但直到你接受一些答案... – 2012-03-08 14:19:41
仍然不明白为什么接受解决方案如此难以接受答案。 – Niranjan 2012-05-14 06:57:11