C# 填充无效,即使键相同也无法删除
我希望将消息和密钥从客户端传输到服务器。然而,我并不真正理解UDP数据包是如何工作的。另外,是否有可能通过数据包传递更多的值(多于2个) 下面的代码可以获得正确的消息和密钥,并且可以解密C# 填充无效,即使键相同也无法删除,c#,udp,aes,padding,packet,C#,Udp,Aes,Padding,Packet,我希望将消息和密钥从客户端传输到服务器。然而,我并不真正理解UDP数据包是如何工作的。另外,是否有可能通过数据包传递更多的值(多于2个) 下面的代码可以获得正确的消息和密钥,并且可以解密 this.dataIdentifier = (DataIdentifier)BitConverter.ToInt32(dataStream, 0); int msgLength = BitConverter.ToInt32(dataStream, 4); int keyLength = BitConverter
this.dataIdentifier = (DataIdentifier)BitConverter.ToInt32(dataStream, 0);
int msgLength = BitConverter.ToInt32(dataStream, 4);
int keyLength = BitConverter.ToInt32(dataStream, 8);
// Read the message field
if (msgLength > 0)
this.message = Encoding.UTF8.GetString(dataStream, 12, msgLength);
else
this.message = null;
// Read the key field
if (keyLength > 0)
this.secretKey = Encoding.UTF8.GetString(dataStream, 12 + msgLength, keyLength);
else
this.secretKey = null;
但是,当我更改keylength的GetString的值时,它将显示错误
this.dataIdentifier = (DataIdentifier)BitConverter.ToInt32(dataStream, 0);
int msgLength = BitConverter.ToInt32(dataStream, 4);
int keyLength = BitConverter.ToInt32(dataStream, 8);
// Read the message field
if (msgLength > 0)
this.message = Encoding.UTF8.GetString(dataStream, 12, msgLength);
else
this.message = null;
// Read the key field
if (keyLength > 0)
this.secretKey = Encoding.UTF8.GetString(dataStream, 12, keyLength);
else
this.secretKey = null;
客户端密钥
服务器密钥
错误
与HTTP相比,您想使用UDP有什么特别的原因吗?是的,这是我的学校工作要求(使用UDP)吗?我正在使用LAN。UDP不可靠,不能保证维持秩序。因此,您需要实现自己的应用程序协议:1。检测并纠正无序数据包,2。检测并重新请求丢失的数据包。消息是否相同?@user253751是的,它们是相同的