Android: 从服务器下载文件后,如何在保存到 SDCARD 之前加密文件?

标签 android

我成功地从服务器下载文件并将其保存到我的 SDCARD 中,但我需要在保存到 SDCARD 之前对文件进行加密

最佳答案

CipherOutputStreamCipherInputStream 与 Cipher 和您的 FileOutputStream/FileInputStream 一起使用。我会建议像 Cipher.getInstance("AES/CBC/PKCS5Padding"); 这样的构造函数调用。如果您想使用密码,请确保您确实使用了良好的 key 派生机制(查找基于密码的加密)。对于多个文件,使用 NONCE 作为 IV(参见维基百科)。

在对字符串进行编码/解码时,一定要指定字符编码,否则当平台编码与之前的编码不同时,您就会遇到麻烦。换句话说,不要使用 String.getBytes(),而是使用 String.getBytes(Charset.forName("UTF-8"))

为了更安全,请添加安全校验和(MAC 或 HMAC),并且不要忘记在计算开始时添加 NONCE。

关于Android: 从服务器下载文件后,如何在保存到 SDCARD 之前加密文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15196083/

相关文章:

java - 哈希md5结果不变

android - 线程 "Test worker"java.lang.IllegalStateException : Module with the Main dispatcher had failed to initialize 中的异常

android - 使用 Android 从后端服务器访问安全信息

android - 如何从第二屏回到第一屏

Android:无论如何要知道是否检查了 'Unknown Sources' 吗?

android - 跳过 147 帧!应用程序可能在其主线程上做了太多工作

java - 如何在 Android 中通过 Asynctask 返回不同的对象

android - 如何使用 Android android.provider.MediaStore.ACTION_IMAGE_CAPTURE 拍摄多张照片?

java - 使用电话号码比较查询数据库

android - android Q 中无法识别 MediaProjection 服务类型