我正在尝试创建一个Android应用程序,它可以实时加密数据并将其写入存储。已经实现了没有加密的应用程序,检查了堆栈溢出上的100+加密示例/帖子,但无法决定使用哪种方法。
一开始考虑使用AES,并做了一些搜索,以了解它有多安全。每次输入16或32个字符(更好的安全性,我希望)密码似乎不方便。作为另一种选择,不对称加密出现在脑海中。用一个密钥加密,用另一个密钥解密,这样我就可以将用于加密的密钥留在内存中,只有在需要解密数据时才使用另一个密钥(比如在PC上或另一个应用程序上离线)。
将被加密的文件将主要是图像、视频、音频记录、办公室文档。
第二种方法是否留下任何漏洞?在AES和RSA之间,如果我需要平衡速度和安全性,哪一种更好。数据不是什么绝密的东西,只是需要防止落入坏人之手。运行KitKat时,设备未加密。这两种方法对某种攻击的抵抗力如何?
编辑:描述两种方法。
方法1:使用基于密码的AES加密,在应用程序启动时手动输入16/32字符密码,从内存中清除某个/某些触发器后的密码。在需要时再次输入密码。
方法2:使用基于私钥/公钥的RSA加密。保留一个密钥,用于在设备上加密的密钥。在解密期间使用另一个密钥,这几乎不需要执行。
发布于 2016-05-05 10:14:17
这个问题有点难以回答,因为您还没有真正描述过任何方法,您刚刚命名了两种加密算法。如果正确地实现,那么这两种算法对您的需求来说都是非常安全的。
重要的是要记住RSA可以加密不超过密钥长度的数据(在填充时减去一些),所以在大多数情况下,仅RSA是不够的。
如果您只是对单个设备上的信息进行加密,并希望用户控制其加密和解密的时间(例如使用密码),则可以使用PBKDF2导出一个以密码字符串为输入的x长度密钥(例如AES256,32字节)。
如果您不打算利用RSA的不对称属性,就不要费心使用RSA。在大多数情况下(但不是全部),如果不涉及服务器或附加方,RSA是多余的。
你没怎么描述你的问题,但如果是我,我会用AES。
在使用AES时,请记住以下几点:
https://stackoverflow.com/questions/37045287
复制相似问题