我希望当设备连接到设备上的USB存储模式/内部文件浏览应用时,有人可以告诉我一种方法,使SD卡上的文件夹隐藏/不可见/加密。
我还需要能够从我的Android应用程序访问这些文件(只有在它有任何不同的情况下才能读取它们。)
我知道一些像SecretVault pro这样的文件加密应用程序,但像这样的应用程序没有开发人员的API,它允许逐步控制加密/破坏状态。
答案 0 :(得分:15)
public byte[] keyGen() throws NoSuchAlgorithmException {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(192);
return keyGenerator.generateKey().getEncoded();
}
您需要在应用中存储密钥
public byte[] encript(byte[] dataToEncrypt, byte[] key)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
//I'm using AES encription
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k = new SecretKeySpec(key, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
return c.doFinal(dataToEncrypt);
}
public byte[] decript(byte[] encryptedData, byte[] key)
throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k = new SecretKeySpec(key, "AES");
c.init(Cipher.DECRYPT_MODE, k);
return c.doFinal(encryptedData);
}