当前位置: 首页 > 知识库问答 >
问题:

Base64编码的字符串,包含导致异常的感叹号

姬振濂
2023-03-14

不幸的是,我不能发布字符串,因为它包含敏感数据。我已经创建了一个在我的公司使用的API。我们有一个合作伙伴正在尝试使用该API。在JSON的一部分中,我们希望看到一个经过数字签名的XML文件的base64编码字符串。当我解析JSON并尝试解码Base64字符串时,API抛出一个异常。

发生System.FormatException HRESULT=0x80131537
MESSAGE=输入不是有效的基64字符串,因为它包含非基64字符、两个以上的填充字符或填充字符中的非法字符。

source=mscorlib

这是我们合作的唯一一个有编码问题的合作伙伴,不管我做了什么尝试,我都无法复制他对签名的XML文件进行编码的结果。当我尝试使用在线解码器解码他的Base64时,它显示一个错误。但当我单击decode按钮时,它实际上下载了正确解码的XML!

当我使用同一文件的编码字符串时,它不会显示错误,而是在“实时视图”框中显示解码的XML,并在我单击decode按钮时下载正确的XML。

有人知道是什么原因导致System.Convert.Tobase64String()输出带有感叹号的字符串吗?根据我的理解,这不应该是base64中允许的字符。我已经尝试了64位和32位,我已经尝试了每个版本的.NET Framework回到2。

共有1个答案

卫琛
2023-03-14

尝试替换每个感叹号字符“!”带有正斜杠字符“/”。

我以前见过base64编码的数据,里面有感叹号。通常它是嵌入到HTML中的,或者是打算嵌入到HTML中的。大概是因为正斜杠在HTML中是一个语法上有意义的字符,也因为base64编码的数据中可以有正斜杠,所以所有的正斜杠都被一个感叹号取代了。

我见过在javascript标记中嵌入WebAssembly程序的人这样做。

 类似资料:
  • 问题内容: base64编码的字符串是否可能包含空格?具体来说,它可以在字符串 末尾 包含空格吗? PS。我正在考虑整个“ MySQL在将字符串存储在VARCHAR字段中时会修剪尾随空白” ;-) 问题答案: 不,它不能。见Base64编码通过使用允许的字符库,这是人物,,,和(最后两个可能因实施不同),以及填充字符(不过这也取决于实现一些实现不使用填充在所有)。

  • 问题内容: 我运行以下代码: 游乐场: http : //play.golang.org/p/qbkEIZRTPQ 输出: 所需的输出: 为什么base64编码它就像普通的一样? 毕竟,RawMessage的MarshalJSON实现只是返回字节片 问题答案: 在螺母中找到答案 传递给的值必须是正常工作的指针:

  • 我找不到答案。如果我用Base64编码一个字符串,那么基于该字符串的编码输出会是唯一的吗?我问这个问题是因为我想创建一个包含用户信息的令牌,所以我需要确保输出是唯一的,这取决于信息。 例如,如果我编码“UnqUserId:987654321 Timestamp:01/02/03”,这将是唯一的,所以无论我把它放在什么其他用户ID中,都不会发生冲突?

  • 问题内容: 我有一个字符串存储为: 有没有办法我可以转换成? 问题答案: 您可以为此使用: 输出:

  • 它失败了并给出了像贝娄这样的例外。 xml格式与不兼容吗?

  • 我在C#和TSQL中有base64字符串编码/解码函数,我的问题是C#的编码结果与TSQL的编码结果不同。 null 你知道如何匹配结果吗?