0

如何解码使用带有 ATL_BASE64_FLAG_NOPAD 标志的 Base64Encode 编码的 base 64 编码字符串。

4

1 回答 1

3

假设这只是意味着“不要放在=最后”,您可以直接添加填充:

public static string Base64PadEnd(string unpadded)
{
    switch(unpadded.Length % 4)
    {
        case 0: return unpadded;
        case 2: return unpadded + "==";
        case 3: return unpadded + "=";
        default: throw new ArgumentException("Invalid unpadded base64");
    }
}

(base64 的工作方式,你永远不应该得到一个最终块为 1 个字符的未填充值。)

添加填充后,Convert.FromBase64String照常使用。

编辑:如评论中所述,如果您的 base64 字符串包含空格,则应在添加填充之前先将其删除。一个简单text = Regex.Replace(text, @"\s", "")的应该做的伎俩。

于 2012-06-11T17:31:33.840 回答