是否可以在加密文件上安全地嵌入所有加密设置?

时间:2013-12-16 10:25:32

标签: c# .net security encryption

我使用过很多文件加密软件,我注意到的是应用程序只有一种加密算法,或者一旦将文件发送给受尊敬的用户,他/她必须使用相同的设置,使用该软件加密文件第一名。我打算用C#开发一个支持多种算法和设置等的应用程序。

我的问题是可以在加密文件中安全地嵌入除密码之外的所有设置,这样用户只需输入密码即可解密文件,无需知道用于加密文件的所有设置。此外,我想包括自解密档案的功能,它将使用前面提到的功能。

我想嵌入使用的salt,hash和加密算法!

请指导我正确的方向。

2 个答案:

答案 0 :(得分:1)

您有文件加密以及您希望加密的设置。 然后只需加密文件并向其中添加一些元数据,您可以在其中描述要解密的设置。

用户输入正确的密码后,您将读取元数据并尝试解密该文件。 您甚至可以使用密码加密元数据。

答案 1 :(得分:1)

当您在开头输出加密的“消息”流时,会对您的信息进行输出,以便流看起来像这样:

[EncryptionAlgorithm] - 4 bytes (for example)
[salt len] - 4 bytes(ish)
[salt] - however many bytes your alg needs
[Encrypted Data len] - 8 bytes(ish)
[Encrypted Data Blob] - however long it is
[hash] - final however many bytes it needs to be

另外,作为提示,我会说你的KEY加密为加密块的第一部分(标准AES的前256个字节)。那样你就可以解密 - >检查前256个字节是否等于用户提供的密钥 - >继续。

此外,如果您正在使用在MSDN上读取的密码,请参阅.NET FCL(Rfc2898DeriveBytes)中提供的密码生成密钥。

希望能让您了解一种可行的方法吗?