我成功下载并将文件从服务器保存到SDCARD,但我需要加密该文件,然后再保存到 SDCARD
答案 0 :(得分:2)
将CipherOutputStream
或CipherInputStream
与Cipher和FileOutputStream / FileInputStream一起使用。我会向构造函数调用提出类似Cipher.getInstance("AES/CBC/PKCS5Padding");
的建议。如果您想使用密码,请确保使用良好的密钥派生机制(查找基于密码的加密)。对于多个文件,请使用NONCE作为IV(参见维基百科)。
在编码/解码字符串时始终指定字符编码,否则当平台编码与前一个编码不同时,您将遇到麻烦。换句话说,请勿使用String.getBytes()
,而是使用String.getBytes(Charset.forName("UTF-8"))
。
为了使其更安全,请添加安全校验和(MAC或HMAC),并且不要忘记在计算开始时添加NONCE。