【问题标题】:Reading a binary file as text and manipulating it... [C#] Versus [VB.NET]以文本形式读取二进制文件并对其进行操作... [C#] 与 [VB.NET]
【发布时间】:2010-09-29 19:21:43
【问题描述】:

好吧,伙计们,我在这里有点麻烦......

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

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

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

仔细观察。这些文件看起来几乎完全相同,但 C# 似乎在(看似)随机的地方到处添加了一些额外的字节......

我目前正在使用 File.ReadAllText(String filepath, Encoding encoding);使用 UTF-8 编码

谢谢!

【问题讨论】:

  • 也许一小段代码和一个“更改”数据集的示例将有助于激发一些帮助。
  • 你能同时发布 VB.NET 和 C# 的加密/解密实现吗?它们可能略有不同。
  • 简化你的加密代码并放在这里,否则不可能发现问题。

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


【解决方案1】:

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

不要那样做。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多