将二进制文件作为文本读取并对其进行操作... [C#] Versus [VB.NET]

时间:2010-09-29 19:21:43

标签: c# vb.net file file-io binaryfiles

好吧,伙计们,我在这里有点腌菜......

我正在做一些加密数据的练习。其中一个是二进制文件。我目前正在使用三重DES来加密和解密VB.NET和C#中的文件......

现在的问题是,一旦在VB.NET中解密并保存,我就可以再次执行它......

但由于某种原因,我的C#文件更大! 20,4K,其中VB.NET一个是19,0。 C#文件也呈现为不可执行......

仔细看看。文件看起来几乎完全相同,但C#似乎在这里和那里(看似)随机地添加了几个额外的字节......

我目前正在使用File.ReadAllText(字符串文件路径,编码编码);使用UTF-8编码

谢谢!

1 个答案:

答案 0 :(得分:3)

您说您正在使用File.ReadAllText ...而且这些是二进制文件。这使我建议您将不透明的二进制数据(例如加密结果)视为文本(例如,在其上调用Encoding.GetString)。

不要那样做。

基本上,加密通常适用于二进制数据 - 二进制输入,二进制输出。如果需要加密文本到文本,通常应用“普通”编码将文本转换为二进制数据(例如Encoding.UTF8.GetBytes(text)),然后使用Base64以无损方式将不透明二进制数据转换为文本 - 例如与Convert.ToBase64String(encrypted)

解密恰恰相反:使用Convert.FromBase64String(encryptedText)获取加密的二进制数据,对其进行解密,然后使用Encoding.UTF8.GetString(decrypted)返回文本。