【问题标题】:Checking if the input-password was correct检查输入密码是否正确
【发布时间】:2017-07-24 20:28:10
【问题描述】:

到目前为止,我的程序只适合我。 我被要求为我的学校公开它,但现在我只是比较用户名和密码,比如

如果 inputu == 用户名 && inputp == 密码

然后我开始使用挂钩和读取内存的东西,如果我这样比较它应该很容易访问。

我不知道如何保存它,我听说过“散列”密码,然后用相同的算法对输入进行散列,然后比较散列,但你不能读出算法吗?

我不知道,谢谢你的帮助!

【问题讨论】:

  • “但是你不能也读出算法吗?” 是的,但这并不意味着你的程序不安全。考虑到 RSA 和 ECDSA 是开放的加密算法,它们也被认为是安全的。好的密码算法是安全的尽管是已知的。
  • 如果有人想破解你的密码,他会这么做的。你为什么要让它安全?该密码的用途是什么?
  • 您想要做的是使用像sha512 这样的加密算法。您将用户密码附加一个salt,然后通过sha512 算法运行它,然后将其存储为他们的密码。然后当他们再次登录时,您按照相同的步骤将保存的加密密码与输入的密码进行比较。
  • @GaryJohnson 不要忘记将盐与哈希一起存储的细节,这是一个非常重要的事情要省略。
  • 因为它从“秘密”站点下载东西,只有有权访问密码的人才能看到。我刚刚认识到该网页也存储为字符串-.-

标签: c++ memory passwords password-protection password-encryption


【解决方案1】:

仅使用散列函数是不够的,仅添加盐对提高安全性无济于事,加密散列非常快。而是使用随机盐在 HMAC 上迭代大约 100 毫秒,然后将盐与哈希一起保存。

使用PBKDF2(又名Rfc2898DeriveBytes)、password_hash/password_verifyBcrypt 等函数和类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。

参考资料:

请参阅 Security Stackexchange 上的 How to securely hash passwords, The Theory

请参阅 OWASP(开放式 Web 应用程序安全项目)Password Storage Cheat Sheet

Modern, Secure, Salted Password Hashing Made Simple

保护您的用户很重要,请记住,如果您的密码被泄露,其他网站上的用户可能会在许多网站上使用相同的密码。请使用安全的密码方法。

书籍:

Handbook of Applied Cryptography Alfred J. Menezes、Paul C. van Oorschot 和 Scott A. Vanstone,请参阅免费下载

Cryptography Engineering Niels Ferguson、Bruce Schneier 和 Tadayoshi Kohno

Applied Cryptography Bruce Schneier

Cryptography Decrypted 由 H. X. Mel 和 Doris M. Baker 撰写(我非常喜欢的好开胃菜)

【讨论】:

  • 非常感谢,我现在有一个想法可以从哪里开始!
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多