gpt4 book ai didi

c# - C、C#文件加密方法及具体解决办法

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:12 32 4
gpt4 key购买 nike

我在 Windows 7 操作系统上有一个小型系统,它由两个应用程序(C 和 C# 应用程序)和一个实际上是文本或二进制文件的数据库组成。

C 应用程序只能从数据库读取,C# 应用程序可以读写。我想保护这个数据库文件免受外部影响。

我倾向于使用公钥加密方法,例如 RSA。您能否提供更好的一种方法或更好的特定解决方案。我建议我需要一些用于 C 和 C# 语言的开源、商业友好的许可库(如 OpenSSL)。然而,我自己的实现也是一个不错的选择。

UPD:我可以更改两个应用程序代码并且我想加密整个文件。

最佳答案

你应该使用一些标准的对称加密。 MS 为这个主题提供了一篇很好的文章。 http://support.microsoft.com/kb/307010/en-us .编写自己的加密方法通常会导致不安全和错误的算法。

使用密码和 Salt 的初始化示例:

var enc = new RijndaelManaged();
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(pw, Encoding.ASCII.GetBytes(salt));
enc.Key = key.GetBytes(encryption.KeySize / 8);
enc.IV = key.GetBytes(encryption.BlockSize / 8);
enc.Padding = PaddingMode.PKCS7;

在您的情况下,您遇到了创建和存储密码和盐的问题。 salt 可以与文件一起存储(例如前 16 个字节,或者您可以选择文件名)并且不能被保护。密码由用户输入。

如果数据绑定(bind)到 windows 帐户,您可能更喜欢使用数据保护 API,因为用户不需要执行密码输入。 Data Protection API 提供了一个很好的例子

您可能对 SO discussion 的第一个答案感兴趣

关于c# - C、C#文件加密方法及具体解决办法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18328664/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com