我需要在
Android应用程序的
sqlite
数据库中存储敏感数据.
我如何确保这些数据是非常安全的?
我知道我可以使用密钥加密数据,但是我在哪里存储该密钥?我不想要求用户填写一个密钥,我只是想让它自己工作.
因为我怕逆向工程,我也不想在代码中加一个加密密钥.
我发现大约有SQLCipher.它说这是一种非常安全的方式来加密数据库中的数据,但为什么会这样呢?我还需要保留一个钥匙来解锁这些信息吗?或者这真的是确保数据安全的完美方式吗?
如果不是,在sqlite数据库中存储敏感数据的(几乎)失败的方法是什么?
对称加密需要一个密钥加密和相同的密钥进行解密.没有办法.
不要将密钥存储在代码中,因为它可以被反编译(就像你所说的).
请求用户首次使用密码,并使用PBKDF2导出加密中使用的密码安全密钥.
用户必须输入密码,或者您需要将其存储在内存中.我要做的是,请用户指定密钥缓存在内存中用于解密的持续时间.
如果持续时间过期,用户将不得不再次输入密码.
我没有彻底检查sqlCipher,但它说它使用AES-256. AES是一种对称加密算法,它需要一个密钥加密和相同的密钥来解密.