好吧,伙计们,我在这里有点腌菜......
我正在做一些加密数据的练习。其中一个是二进制文件。我目前正在使用三重DES来加密和解密VB.NET和C#中的文件......
现在的问题是,一旦在VB.NET中解密并保存,我就可以再次执行它......
但由于某种原因,我的C#文件更大! 20,4K,其中VB.NET一个是19,0。 C#文件也呈现为不可执行......
仔细看看。文件看起来几乎完全相同,但C#似乎在这里和那里(看似)随机地添加了几个额外的字节......
我目前正在使用File.ReadAllText(字符串文件路径,编码编码);使用UTF-8编码
谢谢!
答案 0 :(得分:3)
您说您正在使用File.ReadAllText
...而且这些是二进制文件。这使我建议您将不透明的二进制数据(例如加密结果)视为文本(例如,在其上调用Encoding.GetString
)。
不要那样做。
基本上,加密通常适用于二进制数据 - 二进制输入,二进制输出。如果需要加密文本到文本,通常应用“普通”编码将文本转换为二进制数据(例如Encoding.UTF8.GetBytes(text)
),然后使用Base64以无损方式将不透明二进制数据转换为文本 - 例如与Convert.ToBase64String(encrypted)
。
解密恰恰相反:使用Convert.FromBase64String(encryptedText)
获取加密的二进制数据,对其进行解密,然后使用Encoding.UTF8.GetString(decrypted)
返回文本。