Java 加密android文件
我想将数据存储在android应用程序上的sqlite数据库中 如果有人找到了手机,他将非常容易检索此数据库并对其进行探索,因此我想对其进行加密 我发现这是最好的选择,但要加密它,我们需要一个密钥SQLiteOpenHelper.getWritableDatabase“ThisismyCret” 如果密钥存储在android应用程序的代码中,它仍然不安全,对吗?我认为对apk进行反向工程并不是非常困难 因此,我想要求用户输入一个用于加密数据的密码。 我也不必麻烦用户在每次操作时问他密码,所以每次启动应用时我都会问他密码。这意味着我必须将其存储在变量中Java 加密android文件,java,android,sqlite,encryption,cryptography,Java,Android,Sqlite,Encryption,Cryptography,我想将数据存储在android应用程序上的sqlite数据库中 如果有人找到了手机,他将非常容易检索此数据库并对其进行探索,因此我想对其进行加密 我发现这是最好的选择,但要加密它,我们需要一个密钥SQLiteOpenHelper.getWritableDatabase“ThisismyCret” 如果密钥存储在android应用程序的代码中,它仍然不安全,对吗?我认为对apk进行反向工程并不是非常困难 因此,我想要求用户输入一个用于加密数据的密码。 我也不必麻烦用户在每次操作时问他密码,所以每次
所以我的问题是:有没有办法让偷手机的黑客在运行的android应用程序中查看实时数据,比如存储的变量。我的意思是,他可以转储android应用程序的实时状态并实时解析对象,比如Eclipse分步调试器。你应该对MD5密码进行散列,存储散列版本,并使用散列键调用数据库。然后,当输入密码时,应将哈希版本与存储值进行比较
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(inputPassword.getBytes());
byte[] hashedPassword = digest.digest();
对他来说,检索这个数据库并探索它将非常容易。有可能,是的。非常简单,我不会走那么远。首先,你需要根设备。我同意,这不是很容易,但可能你是对的。事实上,我并不在乎用户键入的密码是正确的还是错误的,如果键入的密码错误,解密将不起作用,我同意MD5不能用作密码哈希或密钥派生函数。它坏了。最好用SHA-1或SHA-256。MD5完全崩溃了,但我的问题不是如何存储密码