Android 安全SQLite数据库

Android 安全SQLite数据库,android,sqlite,Android,Sqlite,我想知道 我想把我的数据库保密。有可能吗 如何在SQLite DB中使用上下文.MODE_PRIVATE 我想将我的数据库设置为私有数据库。其他应用程序不应访问该数据库。在将数据输入数据库之前对其进行加密。据我所知,SQLite数据库保存在/data/目录中某个位置的单个文件中。此外,您的数据以纯文本格式保存。这意味着,任何人都可以通过在手机上加根、获取.db SQLite文件并用文本编辑器打开来提取数据 sqlite的作者提供了一个加密数据的版本。这不是免费的 SQLCipher是一个SQLi

我想知道

我想把我的数据库保密。有可能吗

如何在SQLite DB中使用上下文.MODE_PRIVATE


我想将我的数据库设置为私有数据库。其他应用程序不应访问该数据库。

在将数据输入数据库之前对其进行加密。据我所知,SQLite数据库保存在/data/目录中某个位置的单个文件中。此外,您的数据以纯文本格式保存。这意味着,任何人都可以通过在手机上加根、获取.db SQLite文件并用文本编辑器打开来提取数据

sqlite的作者提供了一个加密数据的版本。这不是免费的

SQLCipher是一个SQLite扩展,它为数据库文件提供透明的256位AES加密


早期的sqlcipher是针对SQLite的开源完整数据库加密,但它不适用于android。但现在它可以作为android平台的alpha版本提供。开发人员已经更新了标准的android应用程序“Notepadbot”,以使用SQLCipher。

在将数据输入数据库之前对其进行加密。据我所知,SQLite数据库保存在/data/目录中某个位置的单个文件中。此外,您的数据以纯文本格式保存。这意味着,任何人都可以通过在手机上加根、获取.db SQLite文件并用文本编辑器打开来提取数据

sqlite的作者提供了一个加密数据的版本。这不是免费的

SQLCipher是一个SQLite扩展,它为数据库文件提供透明的256位AES加密


早期的sqlcipher是针对SQLite的开源完整数据库加密,但它不适用于android。但现在它可以作为android平台的alpha版本提供。开发者已经将标准android应用程序“Notepadbot”更新为使用SQLCipher。

为了保护您的数据库,您必须在应用程序的
缓存
内存中创建数据库。android默认情况下会执行此操作,除非您提供一个
外部存储路径来保存数据库。

为了保护数据库,您必须在应用程序的
缓存中创建数据库。android默认情况下会执行此操作,除非您提供一个
外部存储路径来保存数据库。

您的应用程序的文件是从其他应用程序中沙盒存储的。除非您这样做,否则其他应用程序将无法访问您的数据库内容。其他应用程序在未经您许可/超出您指定方式的情况下查看您的文件的唯一方法是,如果用户具有root权限(在这种情况下,除非您的数据被加密,否则所有赌注都将被取消)。根据您的看法,在sqlite中没有任何context.MODE_PRIVATE,对吗?据我所知,没有
Context.MODE_PRIVATE
用于文件创建,但数据库创建通常由
SQLiteOpenHelper
的实现完成。我还没有看到任何方法可以为此指定任何文件创建模式(但没关系,
Context.mode\u PRIVATE
是默认模式)。在任何情况下,除非您有(a)导出的
ContentProvider
和(b)发布了其他应用可用于查询数据的URI、列名等,否则其他应用程序都不能与您的数据库交互。如果您担心的是恶意方读取原始文件,你应该按照加里的建议去做,并使用加密。你的应用程序的文件是从别人那里沙盒出来的。除非您这样做,否则其他应用程序将无法访问您的数据库内容。其他应用程序在未经您许可/超出您指定方式的情况下查看您的文件的唯一方法是,如果用户具有root权限(在这种情况下,除非您的数据被加密,否则所有赌注都将被取消)。根据您的看法,在sqlite中没有任何context.MODE_PRIVATE,对吗?据我所知,没有
Context.MODE_PRIVATE
用于文件创建,但数据库创建通常由
SQLiteOpenHelper
的实现完成。我还没有看到任何方法可以为此指定任何文件创建模式(但没关系,
Context.mode\u PRIVATE
是默认模式)。在任何情况下,其他应用程序都不能与您的数据库交互,除非您有(a)导出的
ContentProvider
,以及(b)发布了其他应用程序可以用来查询数据的URI、列名等。如果您担心的是恶意方读取原始文件,您应该按照Garry的建议执行并使用加密。