【发布时间】:2019-04-21 08:04:19
【问题描述】:
我有一个 C# 应用程序,有时我必须在其中加密一些数据(XML 文件)。基本上,问题是我不能在服务器上或直接在代码中存储任何密钥,因为.NET 应用程序可以很容易地用例如dotPeek 进行反汇编。
所以基本上我的应用程序会加密 XML 文件并将其保存在磁盘上,然后就可以解密它。
我想出了一个主意,每次用户想要加密/解密数据时都要求输入密码。此密码短语将使用 SHA512 进行哈希处理,生成的字节将用作加密数据的密钥。然后如果用户想解密文件,他们会再次被要求输入密码,这个密码用于解密文件(如果用户输入错误的密码可能会失败)。
所以我的第一个问题是:这真的是个好主意吗?
我的第二个问题是关于实施的。我有散列、序列化、反序列化,但我不知道我应该使用哪种加密算法(我猜不是 RSA,因为要加密的数据会很长)然后我可以将密码作为密钥传递给这个算法吗?
【问题讨论】:
-
您确实知道您刚刚将秘密所在的位置向左移动了一英寸。有人可以查看您的应用程序以查看文件的名称以及密码和/或加密方法是什么。事实上,这对于 SO 来说非常广泛。
-
@Disaffected1070452 那会怎样?密码仅用于加密/解密,OP从未说过它会被存储
-
将存储散列密码,而不是真实密码
标签: c# encryption