加密android数据库,不工作(显然)

时间:2015-05-22 16:03:20

标签: android sqlite encryption

我全力以赴process to encrypt database of android: 设置>安全>加密手机

然后我尝试获取我的Android数据库

$ adb shell
$ run-as com.your.package cat /data/data/com.your.package/databases/your_db > /storage/sdcard0/Download/your.db

结果是我的所有数据都没有加密....

我做了另一个测试并重新安装了我的应用程序,再次获取我的数据库,所有数据都保持未加密状态......

我需要做什么,加密我的数据库(没有代码),以及我如何加密检查这些数据?

--- ---编辑

如果我使用此代码测试加密,我会返回" true",但我仍然可以访问.db并阅读所有信息......

@SuppressLint("NewApi")
    public static boolean isEncrypted(Context context) {
        DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context
                .getSystemService(Context.DEVICE_POLICY_SERVICE);

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
            int status = devicePolicyManager.getStorageEncryptionStatus();
            if (DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE == status) {
                return true;
            }
        }
        return false;
    }

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

设备加密后,将自动生成所有用户创建的数据   在将其提交到磁盘之前加密,并且所有内容都自动读取   在将数据返回给调用进程之前解密数据。

从你提到的关于你的问题的文章中:

  

所以即使有人从手机上取下所有数据,也要避开   锁定屏幕,没有你的密钥,数据将毫无用处。

因此,您的数据在手机上受到加密并受到锁定保护(例如PIN锁定)。

当您通过USB将设备连接到计算机时,只要您正确输入了PIN,操作就会被认为是安全的,您的数据会在发送到您的计算机之前被解密。