c - 如何在 C 程序中存储密码以供将来使用而不写入外部文件?

标签 c authentication passwords user-input

我目前已经开始编写受密码保护的电子日记。用户输入一个(当他们第一次使用该程序时),然后可以使用相同的密码来访问记录。

如何在不将密码写入文件的情况下执行此操作?我希望程序每次都使用相同的密码运行。*?

最佳答案

标准 C 提供的用于存储数据以供将来使用的解决方案是文件。这就是它们存在的原因,并且没有合理的选择。 C 在运行过程中不会保留程序的任何内部数据。为此,您需要使用文件。

没有必要将密码本身存储在文件中。您可以存储hash的密码。哈希是一种将某些输入(例如字符串)转换为另一个值的函数,其方式使得很难找出产生特定值的输入。因此,如果有人知道存储的哈希值,他们就很难算出密码。

因此,当用户设置新密码时,您的程序将计算密码的哈希值并将哈希值存储在文件中。检查密码时,您的程序将读取用户输入的密码,计算其哈希值,并将该哈希值与存储在文件中的哈希值进行比较。

选择、实现和使用哈希函数是一个广泛而复杂的主题。

关于c - 如何在 C 程序中存储密码以供将来使用而不写入外部文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48536203/

相关文章:

c++ - c/c++ 中的可逆浮点排序

java - 如何使用java代码登录网站?

apache - Apache中的Kerberos用户身份验证

PHP更改密码(旧密码与数据库内的旧密码不匹配)

security - 如何在 Silverlight 中加密用户密码?

C fscanf 带有长分隔符

c - 即使我向它发送 SIGABRT,子进程也会正常退出

php - 拉维尔 4 : Stock Auth login won't persist across pages

php - 电子邮件地址作为密码盐?

c++ - 将内存分配给 void* 时的 gcc calloc 行为