Android 将Realm用作安全的文件存储和文件读取器

Android 将Realm用作安全的文件存储和文件读取器,android,database,realm,Android,Database,Realm,我还没有找到这个问题的明确答案,所以就在这里 我想使用RealmforAndroid以加密的方式存储文件,然后能够打开/查看这些文件,而无需将它们实际保存在手机中。这些将是敏感数据文件,因此如果它保留在我的应用程序的本地数据库中,那将是完美的 Realm是否适合我的情况?如果不适合,Android还有什么其他功能?您可以查看有关在Realm上保存图像的信息(它在iOS上,但基本原理是一样的:如果有很多图像,请不要这样做。) 在您的特定用例中,您是否考虑保存文件系统上的加密图像和域中的图像引用?您

我还没有找到这个问题的明确答案,所以就在这里

我想使用
Realm
forAndroid加密的方式存储文件,然后能够打开/查看这些文件,而无需将它们实际保存在手机中。这些将是敏感数据文件,因此如果它保留在我的应用程序的本地数据库中,那将是完美的

Realm是否适合我的情况?如果不适合,Android还有什么其他功能?

您可以查看有关在Realm上保存图像的信息(它在iOS上,但基本原理是一样的:如果有很多图像,请不要这样做。)

在您的特定用例中,您是否考虑保存文件系统上的加密图像和域中的图像引用?您只需要数据库中的文件路径和加密密钥就可以工作。

您可以查看有关在Realm上保存图像的信息(它在iOS上,但基本原理是一样的:如果有很多图像,请不要这样做。)


在您的特定用例中,您是否考虑保存文件系统上的加密图像和域中的图像引用?您只需要数据库中的文件路径和加密密钥即可工作。

域是否适合。你可能需要重新考虑

如果您只想加密数据库,这很容易。只要在初始化领域实例时给它一个加密密钥

然而,也有一些副作用

  • 将大文件保存到Realm会降低速度
  • 数据损坏的危险
    如果数据库文件已损坏,则所有数据都将丢失。所以你必须备份。这意味着将文件保存到域中会导致应用程序的大小至少是直接将文件保存到文件系统中的两倍
  • 加密密钥
    您必须设计一个加密密钥,该密钥基于每个设备,而不是仅在应用程序中使用同一个密钥。或者某人只需要将数据库文件从另一个人的手机复制到他自己的手机上,你的应用程序就会为他解密数据库

  • 王国是否适合。你可能需要重新考虑

    如果您只想加密数据库,这很容易。只要在初始化领域实例时给它一个加密密钥

    然而,也有一些副作用

  • 将大文件保存到Realm会降低速度
  • 数据损坏的危险
    如果数据库文件已损坏,则所有数据都将丢失。所以你必须备份。这意味着将文件保存到域中会导致应用程序的大小至少是直接将文件保存到文件系统中的两倍
  • 加密密钥
    您必须设计一个加密密钥,该密钥基于每个设备,而不是仅在应用程序中使用同一个密钥。或者某人只需要将数据库文件从另一个人的手机复制到他自己的手机上,你的应用程序就会为他解密数据库


  • 文档/图像不会进行本机加密,这就是为什么只将其保存在Realm中是完美的,因为它有自己的加密系统。Realm使用256位AES加密算法,这是一种众所周知的加密算法。安卓上肯定有一些库为您进行重加密。您可以在将图像/文档保存到文件系统之前对其进行加密,然后在域中保留每个文件的路径和加密密钥(因为如果每个文件都有不同的加密密钥会更好)。我对此进行了思考,但找不到任何简单的解决方案。每次手动加密/解密文件似乎有点麻烦。。。除非有一些我不知道的魔法库…是的,它可能是一些额外的编程工作。无论如何,假设您将图像保存在领域中,那么数据库必须执行这些操作,因此从处理器的角度来看,没有额外的工作要做(加密/解密过程由领域或代码执行)我不是安卓专家,所以我不能推荐你一个特定的库来完成这项工作。文档/图像不会进行本机加密,这就是为什么它最好只保存在Realm中,因为它有自己的加密系统当然,Realm使用256位AES加密算法,这是一种众所周知的加密算法,安卓系统上肯定有一些库可以帮你做这些繁重的工作。您可以在将图像/文档保存到文件系统之前对其进行加密,然后在域中保留每个文件的路径和加密密钥(因为如果每个文件都有不同的加密密钥会更好)。我对此进行了思考,但找不到任何简单的解决方案。每次手动加密/解密文件似乎有点麻烦。。。除非有一些我不知道的魔法库…是的,它可能是一些额外的编程工作。无论如何,假设您将图像保存在Realm中,那么数据库必须执行这些操作,因此从处理器的角度来看,没有额外的工作要做(加密/解密过程由Realm或您的代码执行)。我不是Android专家,因此我不能为这项工作推荐特定的库。Realm是一个持久存储,因此,无论您在其中输入什么,都将存储在设备上的文件中,尽管是加密的。@maciekjanusz我不认为这对我的情况有什么帮助……您说过您不想在手机上保存文件,我只是指出,realm使用手机上保存的文件。是的,但数据库文件并不完全像1000个文件一样,我必须跟踪它们的状态和它所属的人……realm是一个持久性存储,所以无论你在其中输入什么,都会存储在设备上的文件中,虽然是加密的。@maciekjanusz我不认为这对我的案子有什么帮助…你说你不想在电话里保存文件,我只是指出,realm使用手机上保存的文件。是的,但数据库文件并不完全像1000个文件,我必须跟踪它们的状态和它所属的人…realm文件有16mb的限制,这并没有那么大。。。它会大大减慢速度吗?还有,可以阅读吗