我必须加密一个列表,每个记录包含三个字段(一个标签、一个用户名和一个密码)。
这些将被保存在JSON结构中,然后写入存储。
我的问题是,我应该加密整个文件,还是应该加密单个字段,将加密的字符串转换为Base64,并将这些加密的字段放入JSON文件中?
考虑到我不希望文件变得很大(例如,小于1 MB),我总是将其作为一个整体读取,并且目标平台是Android,那么在性能和安全性方面最好的方法是什么?
发布于 2011-03-04 14:05:42
我建议对整个文件进行加密。如果您逐个字段加密,那么攻击者将看到数据是一个数组(标签、用户名、密码)。这已经暴露了数据结构的一部分,并削弱了加密。加密和解密整个文件甚至可能比单独处理每个字段更快,尽管对于您正在讨论的大小,我不认为这是一个问题。
发布于 2011-03-04 14:15:49
如果一次加密的数据块少于整个块,则加密功能会被大大削弱。所以加密整个文件。
发布于 2011-03-04 23:02:37
通常,您应该对整个文件进行加密。但是,如果您使用的是一个糟糕的实现,那么这可能会对您不利。例如,如果你使用像RC4这样的流密码并重用密钥,那么通过泄露prng流的部分,文件结构就可能被用来对你不利。这是在WEP攻击中使用的。但这里的问题是实现能力较弱。
简而言之,使用具有随机IV的CBC或CMAC模式,以及具有s2k函数或随机密钥的AES-256。还要记住,在android或iphone上没有地方可以隐藏密钥,除非用户能够访问它。
https://stackoverflow.com/questions/5190238
复制相似问题