我想在SD卡中创建一个加密数据库(SQLite)文件?

时间:2013-06-06 15:04:44

标签: android android-sqlite

我可以在SD卡中创建一个 Database_name.sqlite 文件,但我想要的是每当我创建数据库文件时,它都会以加密格式生成,意味着没有人可以阅读该文件由gingo通过“SQlite Manager”或任何其他方式。

那么,我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

您想要的一切都在此页面上: SQLCipher for Android Application Integration

答案 1 :(得分:1)

在内置的android支持中没有加密的sqlite数据库这样的东西。如果您需要任何加密,您需要自己处理。实现它的一种方法是在应用程序的内部存储中创建数据库,以便通过“私人”访问进行读写,并在应用程序中使用该文件。当您的应用程序完成后,您将加密db文件并将其复制到SD卡上。当您需要再次访问它时,再次将其解密到内部存储并使用它,然后再将其重新加密回SD卡。如果您的数据库很大,则可能无法正常工作,因为内部存储空间可能没有足够的空间。

另一种(更复杂的)替代方法是在将文件保存到SD卡之前创建数据库并加密文件。然后,当您需要访问它时,将其解密到内存中,并在重新加密到SD卡之前在内存中使用它的内部表示。这里的问题是你的内存可用内存比内部存储器少 - 但操作速度可能要快得多。

最后,有一些外部库,例如SQLCipher,在你内心的努力工作中首当其冲,但在内部他们都使用相同的逻辑。

无论您选择哪种方式,请记住处理加密数据库的速度比使用非加密数据库慢。如果你有一个大型数据库,你的性能可能会很高,可能会使你的应用程序无法使用。