通过验证加密的随机字符串来保护密码

时间:2016-11-03 12:58:13

标签: .net encryption passwords

我想创建一个将一些加密配置数据保存在XML文件中的应用程序。我的想法是,我希望用户设置密码并使用它来加密我的数据。

如果我有密码:'mypass'和数据:'mydata'。 当用户定义密码时,我的应用程序将生成一个随机字符串:'myRandomString'。在我的XML文件中,我将保存:

  • 'myRandomString'
  • 'f6354a1eb2a1deb2'-wake是'myRandomString'加密 用'mypass'
  • '69380d137534519' - 开关是'mydata'加密的 用'mypass'

当用户登录时,我会将'myRandomString'与'f6354a1eb2a1deb2'的解密版本进行比较。如果它们相等,那么我的通行证就可以了,我可以解密'mydata'。

AES key finding from encrypted and plaintext data我知道这种方法是安全的,但我想知道是否有更好的方法来保护密码而不使用“受保护的配置”

1 个答案:

答案 0 :(得分:2)

在这种情况下,您应该使用HMAC。它是一个键控哈希函数。

即使未修改随机字符串,也不能认为密码也没有。

使用HMAC,您可以了解自应用程序创建以来对整个文件所做的任何更改。

使用加密字段构建XML文件,通过HMAC提供,然后附加结果。您再次使用该文件时也可以这样做,如果HMAC不相等,则文件已被更改。

使用时间安全比较来检查HMAC

是不会有害的
相关问题