【问题标题】:Android encrypt edittext inputAndroid加密edittext输入
【发布时间】:2016-09-03 19:21:13
【问题描述】:

我正在构建 Android 应用,每次安装只针对一个用户。应用程序需要存储用户名和密码。

验证后,输入的用户名和密码存储在共享首选项中,每次应用启动时都需要输入。

用户名字段:android:inputType="textCapSentences"

密码字段:android:inputType="textPassword"

我的问题是:加密/解密这两个值最不痛苦的方法是什么。

加密过程不必是一流的,因为申请是针对学校项目的。

【问题讨论】:

  • 我会使用 md5 或 sha 单向哈希。

标签: android encryption sharedpreferences password-encryption


【解决方案1】:

无需加密/解密输入。

为了使它们不可读,您只需使用良好的一对一Hash-Function

假设你的哈希函数是'h':

存储您的值:

// Pseudo
SharedPrefs.put(USERNAME, h(input_username));

验证您的价值观:

// Pseudo
SharedPrefs.get(USERNAME).equals(h(input_username));

【讨论】:

  • @Jurza 永远不要编写自己的哈希函数。使用 SHA256 等
【解决方案2】:

永远不要加密密码,使用哈希

你可以试试这个:Hash String via SHA-256 in Java

将密码哈希保存在您的数据库中,当用户登录时,对输入进行哈希处理,如果您的数据库中的哈希等于输入哈希,那么您就知道用户输入了正确的密码

【讨论】:

  • 您能解释一下为什么不能使用密码加密吗?
  • 如果您使用加密任何人都可以反编译您的应用程序,查看您的密码并解密您的用户密码,如果您使用良好的哈希+盐,几乎不可能在一生中得到密码,破解哈希即使使用超级电脑,密码也需要很多年
【解决方案3】:

因为您想在用户每次启动应用程序时加密/解密凭据(用户名和密码)。我建议您使用 [Account Manager][1]

[1]: https://developer.android.com/reference/android/accounts/AccountManager.html 将处理它以及安全。

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2011-05-15
    • 2021-05-14
    • 1970-01-01
    • 2020-08-12
    • 2012-07-30
    相关资源
    最近更新 更多