SD卡文件加密API

时间:2012-04-23 05:57:05

标签: android encryption filesystems android-sdcard

我希望当设备连接到设备上的USB存储模式/内部文件浏览应用时,有人可以告诉我一种方法,使SD卡上的文件夹隐藏/不可见/加密。
我还需要能够从我的Android应用程序访问这些文件(只有在它有任何不同的情况下才能读取它们。)

我知道一些像SecretVault pro这样的文件加密应用程序,但像这样的应用程序没有开发人员的API,它允许逐步控制加密/破坏状态。

1 个答案:

答案 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);
    }