C加密file.txt中的数据

时间:2017-06-07 05:19:44

标签: c encryption passwords

我在加密C中的纯文本时遇到问题。 我能够用C语言编写和读取文件 在文本中:

ID  Promo   Points  Password    Name
1   NONE    0       awdawdawd   daw

在这种情况下,它只是以纯文本打印密码,是否可以加密数据的任何方法,如下所示:

ID  Promo   Points  Password    Name
1   NONE    0      ENCRYPTEDDATA daw

当然密码不会是" ENCRYPTEDDATA",我只是想避免使用用户可以轻松查看文件的纯文本。 我创建文件的原因是因为我需要从文件中读取它并创建一个登录函数。 我的程序本身能够在检查id和密码的请求时解密密码。 它可以使用任何方法,只有程序才能加密和解密数据 任何解决方案? 如果可能,我还需要限制加密文本

2 个答案:

答案 0 :(得分:1)

你应该使用像SHA2这样的强散列函数来散列密码,并将散列存储在你的文件中,而不是将其存储在普通文件中

在这种情况下散列可能比加密更好,对于加密,您将不得不担心在某处安全地存储密钥。

当您的登录功能需要验证传入密码时,您只需对传入密码进行哈希处理,并将其与您文件中的哈希密码进行匹配

答案 1 :(得分:0)

如果要保护登录,则应使用密码哈希,也称为基于密码的密钥派生功能。这些函数通常是 ,但并非总是基于安全散列。 不应使用SHA-2等加密哈希值来实现此目的。

常用密码哈希值是PBKDF2,bcrypt,scrypt和Argon2。 Argon2是最先进的密码哈希竞赛的赢家。密码哈希在两个重要方面与普通哈希不同:

  1. 它使用密钥强化技术使对手更难以使用字典或暴力攻击(以迭代计数或工作因素的形式以及可能的额外内存/线程相关参数);
  2. 它使用一个盐 - 与密码哈希一起存储 - 以避免彩虹表攻击并避免重复哈希值 - 这将显示正在使用相同的密码。
  3. 因此,尽管Pras对于不使用加密是正确的,但我不建议使用安全散列,除非您确定密码足够大并且唯一。通常,这些限制也可以在基于密码的身份验证系统上实施。