0

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

那么,我应该怎么做才能实现这一目标?

4

2 回答 2

1

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

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

最后,还有一些外部库,例如 SQLCipher,它们首当其冲地远离您,但在内部它们都使用相同的逻辑。

无论您选择哪种方式,请记住处理加密数据库比处理非加密数据库要慢。如果您有一个大型数据库,您的性能可能会受到很大影响,可能会导致您的应用程序无法使用。

于 2013-06-06T15:13:20.290 回答
1

你想要的一切都在这个页面上: SQLCipher for Android Application Integration

于 2013-06-06T15:11:30.103 回答