当前位置: 首页 > 编程语言 > C#

要解密的数据长度无效share

时间:2023-04-10 15:04:31 C#

要解密的数据长度无效在System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[]inputBuffer,Int32inputOffset,Int32inputCount)在System.Security.Cryptography.CryptoStream.FlushFinalBlock().Cryptography.CryptoStream.Dispose(BooleanEntireDispose)在传输文件时,在receiveFile中的using语句结束时抛出异常。我尝试在网上搜索,但在加密和解密单个字符串时只找到了使用编码时问题的答案。我使用FileStream,所以我没有指定要使用的任何编码,所以这应该不是问题所在。这些是我的方法:privatevoidtransferFile(FileInfofile,longposition,longreadBytes){//在套接字流上传输Streamstream=newFileStream(file.FullName,FileMode.Open);如果(位置>0){stream.Seek(位置,SeekOrigin.Begin);}//如果这应该被加密,包装加密器流}使用(流){int读取;字节[]数组=新字节[8096];while((read=stream.Read(array,0,array.Length))>0){streamSocket.Send(array,0,read,SocketFlags.None);位置+=阅读;}}}privatevoidreceiveFile(FileInfotransferFile){byte[]array=newbyte[8096];//接收文件流stream=newFileStream(transferFile.FullName,FileMode.Append);如果(UseCipher){stream=newCryptoStream(stream,streamDecryptor,CryptoStreamMode.Write);}使用(流){longposition=newFileInfo(transferFile.Path).Length;而(位置<传输文件.Length){intmaxRead=Math.Min(array.Length,(int)(transferFile.Length-position));intread=positionusing(stream){intread=array.Length;while((read=streamSocket.Receive(array,read,SocketFlags.None))>0){stream.Write(array,0,read);if((read=streamSocket.Available)==0){break;}}}瞧,她工作了(因为我不关心我之前打扰过的那种填充)。我不确定如果Available返回会发生什么0即使没有传输所有数据,但在任何一种情况下我都会倾向于那个。感谢你的帮助Jeffrey!问候。cipher.Mode=CipherMode.ECB;糟糕!滚动你自己的安全代码几乎总是馊主意。我刚刚删除了填充,它被注释掉了-cipher.Padding=PaddingMode.ISO10126;以上就是C#学习教程:待解密数据长度无效分享全部内容,如果对大家有用需要了解更多关于C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: