C#解码Java生成的Base64字符串
最近在开发过程中经常遇到C# 客户端调用java开发的服务端程序,这次遇到的坑是C# 中的
Convert.FromBase64String(dummyData)解密不了java返回的base64字符串,报如下错误:
1. FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. ]
System.Convert.FromBase64String(String s) +0
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +77
System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4
2. 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。
3. Base-64 字符数组或字符串的长度无效。
最后通过定位问题需要如下操作(进行特殊字符替换):
string dummyData = strinput.Trim().Replace("%", "").Replace(",", "").Replace(" ", "+").Replace("_","/").Replace("-","+");
if (dummyData.Length % 4 > 0)
{
dummyData = dummyData.PadRight(dummyData.Length + 4 - dummyData.Length % 4, '=');
}
byte[] inputArray = Convert.FromBase64String(dummyData);
问题虽小,还是值得记录,希望能够帮到遇到同样问题的人。

浙公网安备 33010602011771号