Android SQLite Context.MODE_PRIVATE

Android SQLite Context.MODE_PRIVATE,android,sqlite,Android,Sqlite,我想知道: 在创建数据库时,我们是否可以在SQLite中使用Context.MODE_PRIVATE,以防止不必要的数据库访问 我没有在谷歌上看到任何例子。 如何在数据库中使用此Context.MODE\u PRIVATE。 请帮助我。提供任何链接或示例 他们正在谈论文件。所以数据库也是文件 如何实现这一点?正如Commonware提到的,默认情况下,内部存储上的SQLite数据库是私有的。但正如其他人所提到的,你的手机总是可以访问你的文件 相反,您可以使用任何加密算法将数据保存在数据库中,这将

我想知道:

在创建数据库时,我们是否可以在
SQLite
中使用
Context.MODE_PRIVATE
,以防止不必要的数据库访问

我没有在谷歌上看到任何例子。
如何在数据库中使用此
Context.MODE\u PRIVATE

请帮助我。提供任何链接或示例

他们正在谈论文件。所以数据库也是文件


如何实现这一点?

正如Commonware提到的,默认情况下,内部存储上的SQLite数据库是私有的。但正如其他人所提到的,你的手机总是可以访问你的文件

相反,您可以使用任何加密算法将数据保存在数据库中,这将帮助您限制可读性,除非入侵者知道加密算法


您不能在SQLite中设置“Context.MODE\u PRIVATE”标志

创建数据库时,以下语法非常有用

openOrCreateDatabase(String path, int mode, SQLiteDatabase.CursorFactory factory)
比如说,

openOrCreateDatabase("StudentDB",Context.MODE_PRIVATE,null);

请在网站上查看我的教程

选项1:使用

选项2:安全方法永远没有机会进行黑客攻击。它并不完美,但总比没有好

1) 使用此函数插入数据:

2) 从数据库获取数据并传递到此函数参数:

3) 这些方法的好处: -没有正确的密钥无法解密。 -AES加密是一种非常安全的加密方法

< p > 4将AES密钥存储在C++文件中。


myDB=openOrCreateDatabase(数据库名称,Context.MODE\u PRIVATE,null)请提供任何链接。在创建数据库时使用此行。默认情况下,内部存储上的SQLite数据库是私有的。内部存储上的文件只能由应用程序访问。例外情况是在已植根的设备上,在这种情况下,用户可以访问您的内部存储。感谢Commonware,您总是提供完美的ans。但我想问,我在尝试什么是可能的。或者我可以说,在外部SD卡中没有私有。所有都是公共的,对吗?它说“私有模式上的必需类型游标工厂?”
public static String getEncryptedString(String message) {
    String cipherText = null;

    try {
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(("YOUR-SECURE-PASSWORD-KEY").getBytes(), "AES"));
        byte[] bytes = cipher.doFinal(message.getBytes());
        cipherText = Base64.encodeToString(bytes, Base64.DEFAULT);
    } catch(Exception ex) {
        cipherText = "Error in encryption";
        Log.e(TAG , ex.getMessage());
        ex.printStackTrace();
    }

    return cipherText;
}
//This function returns output string 
public static String getDecryptedString(String encoded) {
    String decryptString = null;

    try {
        byte[] bytes = Base64.decode(encoded, Base64.DEFAULT);

        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(("YOUR-SECURE-PASSWORD-KEY").getBytes() , "AES"));
        decryptString = new String(cipher.doFinal(bytes), "UTF-8");
    } catch(Exception ex) {
        decryptString = "Error in decryption";
        ex.printStackTrace();
    }

    return decryptString;
}