【问题标题】:Encrypt android database , dont working (apparently)加密android数据库,不工作(显然)
【发布时间】:2015-05-22 16:03:20
【问题描述】:

我做所有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;
    }

【问题讨论】:

    标签: android sqlite encryption


    【解决方案1】:

    来自the documentation

    一旦设备被加密,所有用户创建的数据都会自动 在将其提交到磁盘之前加密并自动所有读取 在将数据返回给调用进程之前解密数据。

    从您在问题中提到的文章中:

    因此,即使有人从您的手机中提取了所有数据,绕过 锁屏,没有你的钥匙,数据将毫无用处。

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

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

    【讨论】:

    • 我需要证明我的数据库是加密的,我该怎么做?
    • 如果您的文件加密对您的应用程序至关重要,您可能需要在需要使用数据库文件时对其进行加密/解密。看看stackoverflow.com/questions/4275311/…
    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多