我正在制作一款使用JExcelApi生成Excel文件的Android应用。该场景的内容也可以作为纯文本提供,但它不存储在任何地方(我用它来在TextView上显示它;内容不是太复杂)。
为了简化操作,我将Excel文件存储在SD卡根目录中。我知道这不是一个好的做法,但这个应用程序不适合广泛分发,它只用于我公司的内部用途,所以我不太担心它。当应用程序生成文件时,您可以按主视图上的“发送XLS”按钮,这将创建SEND_ACTION意图,以便您可以通过电子邮件,Dropbox或其他任何方式发送文件,或者您只需将手机插入计算机,将其安装为USB存储器并获取文件。
然而,很快我们就需要将应用程序发送给我们的一些客户,并且需要进行一些更改。我们不希望我们的客户端访问XLS文件,所以我需要以某种方式保护它。不幸的是,JExcelApi不支持受密码保护的文件,因此我需要找到另一种方法来保护它。
关于“发送”按钮:我正在考虑添加一个简单的密码对话框,以便用户在发送意图之前首先需要输入硬编码的密码。不过,我仍然没有看过这个。
最让我担心的是XLS文件。理想情况下,它应该仍然可以在SD卡的根文件夹中使用,但我意识到这可能会使事情变得更加困难。使用应用程序的私有存储将是可选的,因为该文件将是“不可见的”,但这可以通过使用root电话轻松打败。我已经浏览了Cipher类,但我不确定如何将它应用到我的案例中:JExcelApi自行管理文件的打开和保存,我不能使用CipherOutputStream来保存文件;我还需要能够在PC上解密文件。
我该怎么办?有没有办法在Android中加密文件,以便能够在PC上解密它?我是否应该找到一些支持密码保护的其他Excel API(甚至还有)?
关于安全要求:报告的内容并不重要,如果我们的客户能够访问它,那就没什么大不了的(我的意思是,内容本身会在屏幕上显示!),但是我会如果他们曾尝试过,我们的客户会停止坚持访问XLS文件,这样会令人讨厌。
TL; DR:我如何加密Android中的任何类型的文件?
答案 0 :(得分:0)
我对Android上的加密技术不太熟悉,但有Bouncycastle库可用于Android上的加密。可能有一些pitfalls,但显然您也可以使用Android自己的Cipher类来使用不同的算法进行解密/解密。
如果您想共享加密数据,您必须拥有共享密钥才能让收件人解密。