我正在为 Android 创建一个移动应用程序。顺便说一句,这是我的第一个移动应用程序。
我决定将我的应用程序中使用的数据存储在目标 Android 设备的 SQLite 数据库中。
我存储的数据是关于用户的财务数据,所以我决定在存储到数据库之前对数据进行加密。但是我不想把所有的手机资源都花光做加解密。
BouncyCastle 可以解决问题。但我担心如果有人反编译代码,获取安全密钥并解密数据。有没有其他选择。欢迎您的任何想法。
我正在为 Android 创建一个移动应用程序。顺便说一句,这是我的第一个移动应用程序。
我决定将我的应用程序中使用的数据存储在目标 Android 设备的 SQLite 数据库中。
我存储的数据是关于用户的财务数据,所以我决定在存储到数据库之前对数据进行加密。但是我不想把所有的手机资源都花光做加解密。
BouncyCastle 可以解决问题。但我担心如果有人反编译代码,获取安全密钥并解密数据。有没有其他选择。欢迎您的任何想法。
不要将硬编码的密钥嵌入到您的应用程序中;对于任何对您的应用程序进行逆向工程的人来说,这只不过是一种微不足道的混淆。
要生成用于加密的密钥,请使用PBKDF2等密钥派生算法,该算法本质上对密码执行数百轮哈希函数,将结果组合在一起以生成安全密钥。为了帮助理解为什么需要密钥派生算法,请查看其他答案。
PBKDF2 的好处是:
本质上,您让用户输入他/她的密码,然后使用 PBKDF2 计算密钥,然后使用该密钥解密/加密数据。
现在,就实际加密而言,如果您以前没有处理过加密,我强烈建议您坚持使用简单的方法。分组密码必须在操作模式下使用,并且需要初始化向量 (IV) 以确保安全。有很多实现细节必须完全正确才能真正安全,所以在这种情况下,我建议阅读这里的各种其他问题以进一步了解它们。