我开发了一个Android应用程序,我想为其使用实现密码。
现在我对实施这个想法感到困惑。 我想我需要一个文件,我可以存储加密密码读取文件进行验证。但问题是我可以用带有加密密码的文件发送我的应用程序。 或者我应该使用SQLite吗?
答案 0 :(得分:0)
您提出的标准可以通过以下方式完成,您不需要任何外部文件来保护您的密码以加密安全:
1)所有用户的密码都是不变的。
在项目中的任何地方声明:
public static final String password = "Constant Password which will set by me.";
因此,每当用户尝试使用您的应用时,他都会输入the password
,您将与password
匹配。
2)知道密码的人只能访问该应用程序。
告诉“人”密码是什么:
password = "Constant Password which will set by me."
是的,你已经设置好了!每次发布新版本时,都可以更改它!3)此处密码由我(应用程序开发人员)设置。
免责声明:请勿使用您的“想法”!如果您的任何用户泄露了您的密码,整个世界都可以访问您的应用程序!
建议:出于安全考虑,请使用HASHing进行基于密码的登录。让用户可以自由创建自己的密码。您可以通过某些HASH mechanism将每个用户password
存储在您的数据库中。
答案 1 :(得分:-1)
一个警告,用于在登录过程中想要实施密码检查机制的任何人:如果您反编译的apk泄漏了进行通过检查的方法名称,则它将通过将钩子绑定到您的方法并更改返回值,攻击者可以轻松绕过您的通过检查。使自己熟悉Xposed之类的框架。
假设我们的通过检查方法名称为:
isPasswordCorrect
,我们的活动名称是:
PasswordActivity
我们可以使用 Xposed 绕过返回值,如下所示:
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
final String packageName = "your.package.name";
if (!lpparam.packageName.equals(packageName)) { return; }
final String passwordActivity = packageName + ".PasswordActivity";
final String isPasswordCorrect = "isPasswordCorrect";
XposedBridge.log("[+] Hooking method");
findAndHookMethod(passwordActivity, lpparam.classLoader, isPasswordCorrect, String.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
param.setResult(true);
XposedBridge.log("[+] Changed result of " + isPasswordCorrect + " to true");
}
});
}
欢呼!