Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保护iOS数据库信息_Ios_Database_Encryption_Protection_Sqlcipher - Fatal编程技术网

保护iOS数据库信息

保护iOS数据库信息,ios,database,encryption,protection,sqlcipher,Ios,Database,Encryption,Protection,Sqlcipher,我正忙着为iPhone和ipadios7编写一款商业电子词典类型的应用程序。这个应用程序的价值其实存在于我工作多年的数据库中,而不是应用程序本身。数据库非常大(在转换为SQLLite之前,windows计算机上有195mb),我想知道保护其中数据的最佳方法是什么,这样应用程序可以读取数据,但其他人无法读取/访问数据。似乎大多数移动开发人员都使用SQLLite,但使用普通的十六进制编辑器可以轻松读取数据 从这个论坛和其他论坛上,我发现SQLCipher是一个很好的工具。我的问题是,SQLCiphe

我正忙着为iPhone和ipadios7编写一款商业电子词典类型的应用程序。这个应用程序的价值其实存在于我工作多年的数据库中,而不是应用程序本身。数据库非常大(在转换为SQLLite之前,windows计算机上有195mb),我想知道保护其中数据的最佳方法是什么,这样应用程序可以读取数据,但其他人无法读取/访问数据。似乎大多数移动开发人员都使用SQLLite,但使用普通的十六进制编辑器可以轻松读取数据

从这个论坛和其他论坛上,我发现SQLCipher是一个很好的工具。我的问题是,SQLCipher似乎对数据库进行加密,然后在需要在临时文件中读取时对其进行解密,然后再对其进行加密。如果是这样的话,我有两个问题

  • 数据库非常大,每次解密并再次加密都会使应用程序非常慢
  • 当解密(temp)文件在短时间内可用时,是什么阻止黑客读取/复制该文件
  • 我是否理解SQLCipher工作正常?如果是,是否有其他工具/方法来加密/保护数据库,以便程序仍然可以通过SQL查询读取数据,而不以任何方式使数据如此容易获得,或者您可能有任何其他建议

    感谢您根据本页所述:他们不会对您的数据库进行整体解密,因此您的问题#1的答案是否定的。他们声称标准SQLite性能的开销约为5-15%

    至于#2,SQLCipher将对页面中的数据库进行解密,因此理论上,有人可以通过解密的方式访问内存中的该页面。但是,这对于您使用的任何加密方法都是正确的。试想一下——即使您解密了整个数据库,您的应用程序也需要在某个时刻显示/访问其中的一些数据。在这一点上,数据必须被解密。这里唯一的问题是——在给定时刻有多少数据将被解密


    另一种选择是尝试使用标准SQLite和标准ecnryption库自己实现ecnryption/decryption。例如,您可以单独加密每一行(甚至是包含敏感数据的字段),并在需要时对其进行解密——但是,在某个时刻,这一特定行将在内存中解密并对黑客可见

    如果我想加密一个文本文件,那可能吗?当然可以。你可以加密文本文件,但你需要在应用程序内存中解密它,对吗?谢谢你的回答。如果它只发生在内存级别上,我很高兴,只要整个文件没有被解密为临时文件,有人可以在其解密格式下复制它。我想知道,SQLLite是iOS7中最容易使用的数据库格式,还是有另一种内置加密功能的格式根本不需要SQLCipher之类的东西?SQLite非常容易使用。CoreData可能是另一种选择。