2011-11-03 159 views
0

什么是使用BinaryWriter将信息编码为二进制文件的方式。没有人能够看到这些信息。将文件和字符串编码为二进制文件C#

我正在创建的需要能够加载二进制文件(&使用BinaryReader读取它)并解释数据。

因此,例如,我有一组指令,像

op1 
op2 variable 
op3 
op4 string "Hello World" 

我怎样才能把那个和其他文件转换成二进制文件,而无需任何人看到的数据。

+2

你可能想看看字符串加密和解密:http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-net。 –

+1

你的目标是保持数据的秘密吗?如果是这样,那么你需要加密它。二进制只是一种旨在快速高效地加载/保存对象的格式,但它不会保护数据,因为任何人都可以创建读取数据的工具。如果你需要保密数据,那么你也需要加密。 – AaronLS

+0

你的问题不清楚。通过'编码'文件来达到什么目的?你需要存储什么样的信息?你是否希望隐藏文件,或者你不希望文件以纯文本的形式被读取?你如何解释数据?你是否存储你想要执行的代码? –

回答

2

取决于您需要它的安全程度。

我使用拉链流只是为了波落古玩旁观者....

编辑:用于XML的文件

public void save(String filename) 
{ 
    XmlSerializer s = new XmlSerializer(this.GetType()); 
    MemoryStream w = new MemoryStream(4096); 

    TextWriter textWriter = new StreamWriter(w); 

    s.Serialize(textWriter, this); 

    FileStream f = new FileStream(filename, FileMode.CreateNew); 
    DeflateStream zipStream = new DeflateStream(f, CompressionMode.Compress); 

    byte[] buffer = w.GetBuffer(); 
    zipStream.Write(buffer, 0, buffer.Length); 

    zipStream.Close(); 
    textWriter.Close(); 
    w.Close(); 
    f.Close(); 
} 

HTH

马里奥

+0

按照我希望的方式工作:D谢谢 – Steven

+0

欢迎您! –

0
一个例子

使用序列化(BinaryFormatter类),您的数据不会是人类可读的(尽管它不是很强的保护级别);或使用加密(CryptoStream类)。

1

您将需要执行几个步骤。首先,保存二进制文件,这听起来像你有处理。文件写入磁盘后,您需要对其进行加密。检查answer to this question的说明。打开文件时,您会先解密它,然后使用BinaryReader填充您的应用程序状态。

相关问题