为什么Convert.FromBase64()只允许2个填充字符?(c#)
本文关键字:填充 字符 2个 Convert FromBase64 为什么 | 更新日期: 2023-09-27 18:04:00
例如,我有一个base64编码的字符串,想要解码它。字符串的长度是29个字符,所以显然要解码它,我必须使用32个字符。
Convert.FromBase64()
只允许最多2个填充字符。是否根本没有情况下,我需要3个填充字符,因为base64编码?
请参考base64定义。它通过设计允许最多2个填充字符。查看此处的描述:https://en.wikipedia.org/wiki/Base64#Padding
字符串长度为29个字符
一个byte[]不可能被base64编码并产生一个29个字符的字符串,不管填充。一个base64字符产生6位。一个字节[21]有21 × 8 = 168位=> 168/6 = 28.0个base64字符,完美匹配。一个字节[22]有22 × 8 = 176位=> 176/6 = 29.33个字符,四舍五入为30个字符。没有可能的byte[]可以产生29个字符。
所以Convert.FromBase64()正确地告诉你数据是垃圾