我想创建一个将一些加密配置数据保存在XML文件中的应用程序。我的想法是,我希望用户设置密码并使用它来加密我的数据。
如果我有密码:'mypass'和数据:'mydata'。 当用户定义密码时,我的应用程序将生成一个随机字符串:'myRandomString'。在我的XML文件中,我将保存:
当用户登录时,我会将'myRandomString'与'f6354a1eb2a1deb2'的解密版本进行比较。如果它们相等,那么我的通行证就可以了,我可以解密'mydata'。
从AES key finding from encrypted and plaintext data我知道这种方法是安全的,但我想知道是否有更好的方法来保护密码而不使用“受保护的配置”
答案 0 :(得分:2)
在这种情况下,您应该使用HMAC。它是一个键控哈希函数。
即使未修改随机字符串,也不能认为密码也没有。
使用HMAC,您可以了解自应用程序创建以来对整个文件所做的任何更改。
使用加密字段构建XML文件,通过HMAC提供,然后附加结果。您再次使用该文件时也可以这样做,如果HMAC不相等,则文件已被更改。
使用时间安全比较来检查HMAC
是不会有害的