Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加密android文件_Java_Android_Sqlite_Encryption_Cryptography - Fatal编程技术网

Java 加密android文件

Java 加密android文件,java,android,sqlite,encryption,cryptography,Java,Android,Sqlite,Encryption,Cryptography,我想将数据存储在android应用程序上的sqlite数据库中 如果有人找到了手机,他将非常容易检索此数据库并对其进行探索,因此我想对其进行加密 我发现这是最好的选择,但要加密它,我们需要一个密钥SQLiteOpenHelper.getWritableDatabase“ThisismyCret” 如果密钥存储在android应用程序的代码中,它仍然不安全,对吗?我认为对apk进行反向工程并不是非常困难 因此,我想要求用户输入一个用于加密数据的密码。 我也不必麻烦用户在每次操作时问他密码,所以每次

我想将数据存储在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完全崩溃了,但我的问题不是如何存储密码