【问题标题】:Exporting a string in a format that cannot be read by users [duplicate]以用户无法读取的格式导出字符串[重复]
【发布时间】:2014-08-24 14:51:29
【问题描述】:

如果您使用记事本等编辑器打开“.psd”文件,则看不到文件的内容。

结果如下:

http://i.stack.imgur.com/4GjJx.jpg

是否可以导出(例如)用户无法读取的特殊格式的字符串?

【问题讨论】:

  • 您希望您的 C# 类被加密?
  • 这叫加密。
  • 加密或散列

标签: c#


【解决方案1】:

你为什么不尝试加密文本?在此处查看所选答案:Encrypting & Decrypting a String in C#

您显示的数据是二进制数据,而不是文本数据。

有两种类型的文件:1. 二进制文件和 2. 文本文件。

文本文件可以由文本编辑器读取。 二进制文件在文本编辑器中看起来很奇怪(就像图片中的那个)。

【讨论】:

    【解决方案2】:

    编码,如果你真的不关心加密:但是很容易解码

    Byte[] buffer = Convert.FromBase64String(myBase64String1);
    myBase64String2 = Convert.ToBase64String(buffer);
    

    This SO question 可能更合适。这是另一个相当简单的答案,不是世界上最严格的东西,但很好。

    我相信您应该已经拥有 RijndaelManaged 类,并且最佳答案(由 CraigTP 提供)显示了一个简单的包装器,用于使用密码短语加密和解密字符串,这导致相同的 base64 编码,但具有一点明显的优势加密。

    public static string Encrypt(string plainText, string passPhrase)public static string Decrypt(string plainText, string passPhrase)

    【讨论】:

      【解决方案3】:

      为了快速而肮脏的非安全混淆,您可以使用二进制对象序列化。如果您想将其存储为另一种数据格式(例如嵌入 XML),请使用 base64 编码将其转换为“普通”字符串。

      如果您这样做,请注意,不能保证文档在不同的 .NET 运行时和版本之间兼容……MS 可以随时更改二进制序列化格式。因此,这不是一个非常稳健的解决方案。

      或者,您可以序列化为人类可读的字符串(如 XML 或 JSON),然后对其进行加密。然后保证独立于您正在运行的 .NET 版本工作。如果您真的关心安全性,您可能还想投资一个混淆工具,这样他们就无法反编译和恢复您的加密密钥。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-12
        • 1970-01-01
        • 2013-04-27
        • 2021-07-31
        相关资源
        最近更新 更多