我正在为Android开发一个移动应用程序。顺便说一下,这是我的第一个移动应用程序。
我已经决定将应用程序中使用的数据存储在目标安卓设备的SQLite数据库中。
我存储的数据是关于用户的财务数据,所以我决定在存储到数据库之前对数据进行加密。但我不想耗尽所有的手机资源来做加密和解密。
BouncyCastle会做到这一点的。但我担心如果有人去编译代码,获取安全密钥并解密数据。有什么别的办法吗。欢迎你的任何想法。
发布于 2012-12-07 09:15:50
不要将硬编码的密钥嵌入到应用程序中;这只会给任何反向工程应用程序的人提供微不足道的混淆。
若要生成用于加密的密钥,请使用密钥派生算法(如PBKDF2 ),该算法实质上对密码执行数百轮哈希函数,将结果组合在一起生成一个安全密钥。要帮助理解为什么需要密钥派生算法,请看一看另一个答案。
PBKDF2的好处是:
本质上,您让用户输入他/她的密码,然后使用PBKDF2计算密钥,然后使用该密钥解密/加密数据。
现在,就实际加密而言,我强烈建议,如果您以前没有处理过密码,那么应该坚持一些简单的方法。块密码必须在操作模式中使用,并且需要初始化向量(IV)才能安全。为了使其真正安全,有许多实现细节必须完全正确,因此在本例中,我建议阅读其他各种问题,以进一步了解它们。
https://security.stackexchange.com/questions/25104
复制相似问题