【问题标题】:when i decrypt base64 string in c# it shows me ????? question mark and some special character sign当我在 c# 中解密 base64 字符串时,它显示我 ???????问号和一些特殊字符符号
【发布时间】:2018-04-14 08:58:36
【问题描述】:

我有一个 base64 字符串,我想通过 c# 代码对其进行解密。但是当我应用下面的代码时,它会显示问号和不同的特殊字符。 我不知道为什么会显示这个。

byte[] data = Convert.FromBase64String(encpStr);
string decodedString = Encoding.UTF8.GetString(data);

我在 Visual Studio 中创建了控制台项目,并进行了此练习。在下面查看我的整个代码。

string encStr = "oJe6iooq+PbvArD+C7P7B/cHAAL9Dr2/vvIBFRcVCAYfxxEcygzMFB0eFNEWFC3VKibYLCknMiLeLzU7PC8pOPT19g==";

Console.WriteLine("******************\nEnc String:\n" + encStr + "\n\n\n**********************");
byte[] data = Convert.FromBase64String(encStr);
string decStr = Encoding.UTF8.GetString(data);
Console.WriteLine("\n\n\nDecr String: \n" + decStr + "\n\n");
Console.ReadKey();

【问题讨论】:

  • 好吧,也许字节不形成 UTF8 字符串。您在代码中混淆了编码和加密,这可能是一个提示。
  • 告诉我们 encPstr 来自哪里以及它应该是什么。如果可能,请提供样品。否则你还不如删除这个问题。
  • 好的,我更详细地编辑我的问题
  • 字符串已添加,请立即查看。
  • encStr 不太可能是对字符串进行加密,然后使用 base64 对 byte[] 进行编码的结果。在这种情况下,你只是走得太快了,你忘了解密它。

标签: c# encryption base64


【解决方案1】:
  1. 默认情况下,许多系统/语言显示的字节值不能表示为 ?、� 或类似字形。

  2. Base64 是编码而不是加密。

  3. Base64 编码通常用于需要将数据作为字符串处理但数据值不能表示为字符(或至少不是全部)的情况。

数据通常是 8 位字节的集合,例如数组。示例包括图像、编译的计算机代码、加密数据等。

不是所有的,即使是大多数,字节值都没有字符表示,也没有可显示的表示。请参阅 ASCII、unicode,尤其是 UTF-8Base64

【讨论】:

    【解决方案2】:

    Base64 用于将二进制数据编码为文本。如果你解码 Base64 数据,你会得到二进制数据。大多数二进制数据不能表示为字符串(或任何其他形式的文本),因为它根本不是文本。

    您的 Base64 就是这样一个例子。结果不是文本,既不是 UTF-8 格式,也不是 ASCII 格式,也不是任何其他编码格式。

    这就是为什么你会得到一堆有趣的角色。它们用于表示无效字符。

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 2013-07-25
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2019-04-22
      • 2011-04-12
      相关资源
      最近更新 更多