Android:文件/文件夹加密
Posted
技术标签:
【中文标题】Android:文件/文件夹加密【英文标题】:Android: File/Folder Encryption 【发布时间】:2021-09-30 19:50:01 【问题描述】:上下文:我正在使用 Kotlin 开发个人安全应用程序。我需要添加一个功能,以便在单击按钮时,设备上的所有图像(或相关文件夹)都被加密。解密需要一个用于加密的密钥。
问题:有没有办法通过标准库做到这一点?如果没有,是否有 API 可以帮助我完成这项工作?
链接会很有帮助。
【问题讨论】:
简单的答案是“是”。工作流程如下:1)从外部存储读取图像,输入密码,在 GCM 模式下使用(例如)AES-256 加密文件,密钥派生(例如)PBKDF2,存储加密文件并删除原始文件。对于解密,请输入密码,导出解密密钥,加载加密文件并将其作为解密文件存储在外部存储中(并删除加密文件)。所有加密功能都可通过(例如)BouncyCastle 库使用。 这实际上很有帮助。你有 BouncyCastle 的示例代码吗?我以前没有使用过这个库.. 不幸的是,我在 android 上的文件管理方面的经验确实非常少,在这种情况下我无法为您提供帮助 [这就是为什么我给出了“伪代码”而不是 Java/Kotlin 的原因),抱歉。 【参考方案1】:您需要重新考虑该功能以及对它的需求。如果您想加密您的设备,Android 可以选择磁盘加密。用它。然后设置密码和/或生物识别授权以打开手机。该组合将比您的应用更加安全。
最后我怀疑你想做的事情是可能的。您需要对无法获得它们的文件夹(每个应用程序的私有目录)的读/写权限。加密也需要时间,因此您永远无法通过按一下按钮立即加密 GB 的数据。正确的做法是始终加密,所以在第一次写入磁盘时就完成了。
您基本上是在错误的级别上执行此操作。这种类型的行为需要内置到操作系统中(而且确实已经内置),而不是应用程序。
【讨论】:
感觉对整个设备进行加密会耗费大量的时间和精力,而且并不是真正可以在运行中完成的事情......所以我试图创建一个更轻的版本相同的东西,但仅适用于最大可能为几百 MB 的图像。比如,不是社交媒体图片,而是相机图片和其他此类文件夹。我不想加密整个设备。它只是主媒体目录中的图像。本质上更像是一个文件柜应用程序。 @MayankGupta 加密在所有最新的 Google Android 设备上默认启用,因此它不需要任何时间,因为它始终处于活动状态! @Robert 你说的是在内部存储中存储文件时发生的标准加密吗?因为这个问题与那个完全不同......我想让用户加密他们的图片,这样其他人就无法查看它,即使他们可以访问设备。所述用户稍后可以通过将作为文本消息发送给他们的联系人之一的密钥在取回他们的设备时解密这些图片。我说的图片不在应用的存储中,而是在主存储中。以上是关于Android:文件/文件夹加密的主要内容,如果未能解决你的问题,请参考以下文章
为啥windows下aes解密android上的加密文件失败
[RK3568][Android11]FDE(全磁盘加密)FBE(全文件加密)简介