2011-11-03 158 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填充您的應用程序狀態。

相關問題