为什么Convert.FromBase64()只允许2个填充字符? (C#)

时间:2016-08-26 08:30:52

标签: c# base64

例如,我有一个base64编码的字符串,想要解码它。字符串的长度是29个字符,所以很明显解码它我必须使用32个字符。

Convert.FromBase64()最多只允许2个填充charcaters。根本没有因为base64编码而需要3个填充字符的情况吗?

2 个答案:

答案 0 :(得分:2)

请参阅base64定义。它最多允许2个填充字符。请参阅此处的说明:https://en.wikipedia.org/wiki/Base64#Padding

答案 1 :(得分:1)

  

字符串的长度为29个字符

无论padding是什么,都不可能在base64中编码byte []并产生29个字符串。一个base64 char产生6位。字节[21]具有21×8 = 168位=> 168/6 = 28.0 base64 chars,完美契合。字节[22]具有22×8 = 176位=> 176/6 = 29.33个字符,最多30个字符。没有可能的byte []可以产生29个字符。

所以Convert.FromBase64()正确告诉你数据是垃圾。