当前位置: 首页 > 编程语言 > C#

FromBase64字符串的长度必须是倍数还是4?分享

时间:2023-04-10 22:58:32 C#

FromBase64字符串长度必须是倍数还是4?根据我的理解,base64编码的字符串(即编码输出)必须始终是4的倍数。c#Convert.FromBase64String说它的输入必须是4的倍数但是,如果我给它一个25个字符的字符串,它不会抱怨[convert]::FromBase64String("ei5gsIELIki+GpnPGyPVBA==")[convert]::FromBase64String("1ei5gsIELIki+GpnPGyPVBA==")都有效。(第一个是24,第二个是25)[convert]::FromBase64String("11ei5gsIELIki+GpnPGyPVBA==")因长度无效异常而失败我认为这是c#库中的错误,但我只是想确定-我我正在编写代码来嗅探字符串以查看它们是否是有效的base64字符串,并且我想确保我了解有效字符串的样子(一种可能的实现是将字符串提供给system.convert并查看它是否抛出-为什么要重新发明完美的代码)是的,这是一个缺陷(又名错误)。它的启动是由于名为FromBase64_ComputeResultLength()的内部辅助函数中的性能优化,该函数计算byte[]结果的长度。它有这个评论(编辑以适合)://对于合法输入,我们可以假设0“我们会注意到”评论不完全准确,解码器标记'='如果它不是预期的但它可以'检查是否有太多。25个字符的字符串的情况如何。您可以在connect.microsoft.com上报告问题,我没有看到任何类似的现有报告。请注意,由于更改会破坏现在成功解析错误base64字符串的现有程序,因此Microsoft可能不会很快修复它。它通常需要一个主要的.NET版本更新来消除这样的问题,就像在.NET4.0中所做的那样,这些都不会出现。然而,简单的解决方法是检查字符串长度是否可以被4整除,使用%运算符。以上是C#学习教程:FromBase64字符串的长度必须是倍数还是4?如果分享的所有内容对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: