C# 填充无效,即使键相同也无法删除

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

我希望将消息和密钥从客户端传输到服务器。然而,我并不真正理解UDP数据包是如何工作的。另外,是否有可能通过数据包传递更多的值(多于2个)

下面的代码可以获得正确的消息和密钥,并且可以解密

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是的,它们是相同的