Convert.FromBase64String的时候对于有些字符串会出错

nihao955 2008-09-01 08:54:42
一个字符窜testStr,我先用.net提供的加密类用“DES”算法给它加密,然后用Convert.ToBase64String转换后发送出去。
在接受方想用Convert.FromBase64String转换为byte[],然后用相同算法解密。

但是用Convert.FromBase64String的时候对于有些字符串会出错,报告“System.FormatException: Base-64 字符数组的无效长度。”的异常,为什么?
...全文
1889 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lextm 2008-09-01
  • 打赏
  • 举报
回复
首先应该尝试比较发出和接收到的byte[]是不是一样。很多时候接收那边会不一致(例如结尾多了一些空白)。然后你再来质疑Base64解码错误吧。
nihao955 2008-09-01
  • 打赏
  • 举报
回复
这是我的加密方法?
该如何改呢?

public class EncryptText
{

private static byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/// <summary>
/// 加密方法
/// </summary>
/// <param name="ClearText">明文</param>
/// <param name="Key">加密的KEY</param>
/// <returns>加密的密文</returns>

public string EText(string ClearText, string Key)
{
byte[] rgbKey = Encoding.Default.GetBytes(Key.Substring(0, 8));
byte[] rgbIV = IV;
byte[] clearTextArray = Encoding.UTF8.GetBytes(ClearText);
try
{
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(clearTextArray, 0, clearTextArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return "null";
}
}

}

多多谢指教!
whoami333 2008-09-01
  • 打赏
  • 举报
回复
不要看显示出来的,看看末尾不能打印出来的字符。
greystar 2008-09-01
  • 打赏
  • 举报
回复
说明加解密有问题
greystar 2008-09-01
  • 打赏
  • 举报
回复
不符合他的标准当然会出错了.
nihao955 2008-09-01
  • 打赏
  • 举报
回复
字符串内容是这样的:
hZU3Rj7rmdnUGVCBEKTSPpfvfaKoZBiVScdZyT2fUYY=7wlXZ2N9wrX4bhLzRrjOFs6K9lSEE1jjiZ4yiyRVw6I=

是不是有问题?
cftea 2008-09-01
  • 打赏
  • 举报
回复
绝对是由于漏发了,或多发了,或漏取了,或多取了。
不信你试:Convert.FromBase64String(Convert.ToBase64String(...)),行得通。
whoami333 2008-09-01
  • 打赏
  • 举报
回复
你检查一下看看是不是字符串末尾多了什么字符。
whoami333 2008-09-01
  • 打赏
  • 举报
回复
不能return "null";
内容概要:本文提出了一种基于记忆机制、进化算子和局部搜索策略的改进灰狼优化算法,并结合线性种群规模缩减策略以提升算法收敛速度与全局搜索能力。该算法通过引入记忆模块保存优质个体信息,利用进化算子增强种群多样性,同时采用局部搜索机制提高寻优精度,有效克服了传统灰狼算法易陷入局部最优、收敛速度慢等问题。文中详细阐述了算法的设计思路、实现步骤及关键参数设置,并提供了完整的Matlab代码实现,便于读者复现与应用。实验部分验证了改进算法在多个标准测试函数上的优越性能,展示了其在优化问题中的潜力。; 适合人群:具备一定智能优化算法基础,熟悉Matlab编程,从事科研或工【改进灰狼算法】基于记忆、进化算子和局部搜索的改进灰狼优化算法及线性种群规模缩减算法(Matlab代码实现)程优化相关工作的研究生、科研人员及技术人员; 使用场景及目标:①解决复杂优化问题如函数优化、参数调优、工程设计优化等;②学习灰狼算法的改进思路与实现方法,掌握智能算法的性能提升策略; 阅读建议:建议结合Matlab代码逐行理解算法实现过程,重点关注记忆机制、进化操作与局部搜索的融合方式,并通过实验对比分析改进策略的有效性。

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧