【发布时间】:2014-11-18 09:31:24
【问题描述】:
我最近更改了我的应用程序以使用 SQLCipher API 而不是标准的 android.database.sqlite。
最初,用户在第一次登录应用程序时会输入他们的用户名和密码。该应用程序根据我们的服务器验证凭据。如果它们是正确的,我将用户名和密码存储在手机上的 sqllite Db 中。随后对手机的数据库进行登录,无需网络呼叫。
我也混淆了 apk。
存储的密码还用于获取用户的名单,其中包含敏感的客户端数据。例如,用于进入客户住所、地址等的数字代码。这是需要保护的,以防手机被盗、root 或反编译。
我的问题是我知道每次调用 SQLCipher 加密/解密都会自动发生
SQLiteDatabase db = dbhelper.getWritableDatabase("12345");
12345 只是我现在硬编码的一些字符串。我希望这是用户用于登录的密码。
最好的方法是什么。我需要找到一种安全存储用户密码并用于加密的方法。我不想在应用程序中硬编码任何密码(除非这是唯一的方法)。
问题是我怎么打电话
SQLiteDatabase db = dbhelper.getWritableDatabase("STORED PASSOWRD IN DB");
return db.query(DBHelper.TABLECARER, null, null, null, null, null, null);
光标什么时候有密码?
谢谢
【问题讨论】:
-
你是如何混淆 apk 的?
-
@NadeemIqbal 我正在使用 Proguard