【发布时间】:2023-03-27 16:58:01
【问题描述】:
我正在创建一个简单的基于 java 的登录系统。它询问登录详细信息并检查文本文件以查看凭据是否匹配。如果他们这样做,则允许用户通过安全性。截至目前,任何人都可以打开“.txt”文件并阅读凭据。我想防止这种情况发生。我怎样才能做到这一点?
P.S.- 我仍在学习基础知识并保存 DBMS 以备后用,仅此而已。
【问题讨论】:
-
您将密码存储在数据存储中,但数据存储是平面文件而不是数据库(这意味着对于第 n 个用户,您必须通过 (n-1) 个密码才能找到它们,这使得它非常不安全)。这是可能,但更大的问题是……如果你只是在学习这些东西,为什么还要为文件系统烦恼呢?为什么不半途而废并使用数据库?
-
因为我不知道数据库语言如何足够好地用 java 实现它们。正如我所说,我还在学习。
-
这正是我的观点。尝试推出自己的登录系统存在很多危险,并且确实需要了解实际登录系统的组件。由于您正在学习,我个人认为这是一个学习一些更好方法的机会。我可以尊重您想要基本方法,但说真的,您不想想学习一种非常非常糟糕但“它有效”的方法,以便以后使用。
-
我不会推出登录系统。这只是我为自己做的一个项目。此外,这不仅仅是关于这个项目,而是关于学习如何将数据(任何类型的数据)存储在一个文件中而不让用户读取它。
-
您永远不应该加密您的用户密码。您需要使用散列代替一些强大的散列,例如 PBKDF2、bcrypt、scrypt 和 Argon2。由于散列函数是单向函数,因此您将无法“解密”散列。为了验证您的用户,您可以再次通过哈希函数运行密码,以便与存储在数据库中的哈希值进行比较。查看更多:How to securely hash passwords?
标签: java encryption