在我的項目中,我正在研究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