使用文件.加密以在本地保存一些持久信息

本文关键字:保存 信息 文件 加密 | 更新日期: 2023-09-27 18:12:00

我有一个程序,它需要在每个用户的机器上保存一些用户唯一的信息(我在第一次使用时向用户查询这些信息)。在我的程序初稿中,我只是将这些信息保存在一个文本文件中(在程序文件夹的子文件夹中)。但它是开放文本,我想改变它,使它不那么容易阅读。

在阅读了MSDN上的一些文章后,我认为使用文件。加密和文件。解密就可以了。我不想对文本进行散列,因为我需要检索它并在我的程序中以开放形式使用它。(你可以猜到,我以前没有使用过加密——这也是为什么我不急于使用更复杂的东西——但如果这是我唯一的选择,我会这样做。)

这是我的代码,这是不工作。如果你能告诉我我做错了什么,我将不胜感激。

if (File.Exists(@"subfolder'a.txt"))
        {
            File.Decrypt(@"subfolder'a.txt");
            string unique = File.ReadAllText(@"subfolder'a.txt");
            File.Encrypt(@"subfolder'a.txt");
        }
        else
        {
            string unique =
            Microsoft.VisualBasic.Interaction.InputBox("Please enter your
            unique text ...", "Enter your unique text", "");
            File.WriteAllText(@"creds'u.txt", username);
            File.Encrypt(@"creds'u.txt");
        }

谢谢。

新手....

使用文件.加密以在本地保存一些持久信息

好的,首先考虑一下你的方法。

If (the file exists) {
    Decrypt the file
    Read the contents
    Encrypt it again
} else {
    Enter text
    Save as a different file name than above
    Encrypt the file
}

当您解密文件时,您正在尝试解密磁盘上的文件,使其未加密。然后读取内容,并再次加密。

此方法假定您正在将文件解密到磁盘,然后读取其内容,但是这不是正确的用法。

https://support.microsoft.com/en-us/kb/301070

您提到您不想对数据进行散列,但是假设您将使用合适的复杂盐和密钥,您可以将这些存储在程序中,以便在经过验证的散列算法中使用。

有人可能通过反编译IL代码来获取这些信息,但这仍然比在磁盘上解密更安全。

请阅读下面的文章,这篇文章将解释安全散列的一些因素,您可能会发现这些因素很有用。https://crackstation.net/hashing-security.htm

File.Encrypt的部分问题可能是它没有在windows平台上得到普遍支持,在我看来,这使它接近无用。

从根本上说,如果你打算在你的程序中解密数据,我怀疑你主要关心的是有人破解网络并获得公司机密,更多的是防止人们扰乱配置数据或类似的。对于这种情况,使用存储在代码中的键的盐哈希是完全可以的,但是在企业级应用程序中不能满足任何严重的安全问题。

本文将引导您完成此过程。如果您愿意,您可以将密码作为字符串存储在您的程序中,而不是询问密码,尽管如果您为您的程序包含登录提示,您可以基本不变地使用示例代码。

https://msdn.microsoft.com/en-us/library/ms172831.aspx