我想使用密码哈希进行登录。我使用md5或sha256 将用户和密码存储在SharedReferences中
val myPassword = md5("1234")
val sharePref = getSharedPreferences("APP_PREF", MODE_PRIVATE)
sharePref.edit().apply {
putString("password", myPassword)
commit()
}
fun md5(input:String): String {
val md = MessageDigest.getInstance("MD5")
return BigInteger(1, md.digest(input.toByteArray())).toString(16).padStart(32, '0')
}
如何从SharedReferences获取字符串以使用带有md5密码的身份验证
val user = sharePref.getString("user", "")
val password = sharePref.getString("password", "")
if (user == "user" && password == "1234") {
//Toast
}
我不确定这是否是您所要求的,但您不能(好吧,这取决于…(反转哈希算法以从哈希中获取原始密码。您可以执行相反的操作:用户提供的哈希密码,并检查生成的哈希是否与之前存储的哈希相同:
if (user == "user" && password == md5("1234")) {
无论是否加密,都不应在设备上存储用户凭据。如果用户卸载你的应用程序或清除缓存,他们将被锁定。他们也无法从其他设备登录。凭据应由服务器处理。
要加密密码,您应该使用类似bcrypt的库。它允许您对哈希进行加盐处理,使其很难解密。同样,这应该在后台完成。
如果你真的想在设备上这样做,这是一个很好的资源https://bignerdranch.com/blog/encrypting-shared-preferences-with-the-androidx-security-library/