【问题标题】:encryption using AES in android, and decryption in Java [closed]在android中使用AES加密,在Java中解密[关闭]
【发布时间】:2017-04-04 15:41:02
【问题描述】:

我已经成功地在 android 中加密了密码字符串并将其发送到存储在数据库中的服务器,现在为了实现“忘记密码”,我们需要在 java 中解密相同的“加密密码”。

在 android 中使用这个库进行加密/解密: com.scottyab:aescrypt:0.0.1

感谢任何帮助。 提前致谢。

【问题讨论】:

  • 与其解密现有密码,不如执行以下操作之一: 1. 生成新密码并将其发送给用户,该用户应在登录时更改密码。 2. 为用户提供一个输入新密码的界面,将其加密并替换到您的数据库中。
  • 最好散列密码,而不是加密它们。
  • 加密密码确实不利于安全,花几个小时分析apk就能找到加密密钥
  • 正如@GriffeyDog 所说,使用散列而不是加密
  • 不要加密密码,当攻击者得到数据库时,他也会得到加密密钥。使用随机盐在 HMAC 上迭代大约 100 毫秒,然后将盐与哈希一起保存。使用password_hashPBKDF2Bcrypt等函数和类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。

标签: java android encryption


【解决方案1】:

你做错了(不安全)。

  1. 不要在客户端加密密码,通过 HTTPS 以纯文本形式通过 POST 请求将密码发送到服务器。

  2. 不要加密服务器上的密码,使用包含盐和迭代的密码安全散列方法(请参阅我的评论),这样散列时间约为 100 毫秒。您将无法访问原始密码,这很好,因为攻击者也不会。是的,会有攻击者,他们将获得管理员访问权限,做好计划。

  3. 对于密码重置,向用户发送一个限时重置令牌以用于创建新密码。

注意:请务必在服务器上使用 2 因素身份验证,并严格限制有权访问的人数。

【讨论】:

    猜你喜欢
    • 2018-09-07
    • 2018-10-08
    • 2012-02-18
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    相关资源
    最近更新 更多