好吧,伙计们,现在是老问题的时候了,你如何使用 C# 对 xml 文件进行密码保护?我也已经在 C# 中创建了该文件(好像不是相关的),现在我需要对其进行密码保护,以便我可以将其通过电子邮件发送给客户,任何建议的家伙,
此外,我尝试使用 C# 将 xml 文件放入 zip 文件中,这样做后文件会丢失其扩展名,并且它会使用我找到的每种方法来执行此操作,所以我真的只想用密码保护原始文件。
我应该更清楚一点,文件永久丢失它的扩展名,当最终用户解压缩它时,它不再是一个 xml 文件,它只是一个有名称的文件,没有关联或任何东西
好的,稍微改变一下,很多人指出 xml 没有密码保护,因为它只是文本,不是问题,所以让我们改变一下它的压缩方式
FileStream sourceFile = File.OpenRead(@"C:\sample.xml");
FileStream destFile = File.Create(@"C:\sample.zip");
GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);
try
{
int theByte = sourceFile.ReadByte();
while (theByte != -1)
{
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
}
finally
{
compStream.Dispose();
}
上面的代码会压缩文件,但是当最终用户解压缩文件时,文件会丢失它的 xml 扩展名以及文件关联
好的,我有一个更新我想出了如何防止文件丢失它的扩展名,如果我将输出文件名更改为 sample.xml.zip,系统会很好地处理它,允许输出文件像这样读取,示例.xml.zip,但是 winzip 从来不喜欢打开它,7zip 也没有,所以我对此非常满意,现在密码保护的东西是我还没有弄清楚的东西。
仅供参考,我的新代码。
FileStream sourceFile = File.OpenRead(@"C:\sample.xml");
FileStream destFile = File.Create(@"C:\sample.xml.zip");
GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);
try
{
int theByte = sourceFile.ReadByte();
while (theByte != -1)
{
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
}
finally
{
compStream.Dispose();
}