我得到了"Base-64 char数组的长度无效".IF(){...}内部是我试图让它工作的变种.它没有在第一行中失败而没有调用decrypt(...)证明它不是函数问题.我在第一次解密(...)调用时遇到了同样的错误.使用encoding.ascii的最后一个...将让我进入函数内部,但随后它在函数内部失败.我从数据库中获取正确的加密信息到字符串SSnum.它的值是:4 + mFeTp3tPF
try
{
string SSnum = dr.GetString(dr.GetOrdinal("Social Security"));
if (isEncrypted)
{
byte[] temp = Convert.FromBase64String(SSnum);
//SSnum = decrypt(Convert.FromBase64String(SSnum), Key, IV);
//SSnum = decrypt(Encoding.ASCII.GetBytes(SSnum), Key, IV);
}
txt_Social_Security.Text = SSnum;
}
catch { txt_Social_Security.Text = ""; }
Run Code Online (Sandbox Code Playgroud)
我被告知使用Convert.FromBase64String()而不是ASCII方法...所以为什么它失败了,我该如何解决?
sur*_*bob 19
Base64数据长度应为4的倍数,并使用padding char'='您可以将数据更改为有效的base64数据.
string dummyData = imgData.Trim().Replace(" ", "+");
if (dummyData.Length % 4 > 0)
dummyData = dummyData.PadRight(dummyData.Length + 4 - dummyData.Length % 4, '=');
byte[] byteArray = Convert.FromBase64String(dummyData);
Run Code Online (Sandbox Code Playgroud)
这将帮助您,尝试一次.谢谢suribabu.
que*_*rin 14
它的值是:4 + mFeTp3tPF
您收到此错误,因为该值4+mFeTp3tPF实际上不是有效的Base64.
您是否可能只是缺少必需的填充字符,如此4+mFeTp3tPF=?