You've already forked lidgren-network-gen3
mirror of
https://github.com/lidgren/lidgren-network-gen3.git
synced 2026-05-06 02:11:06 +09:00
Recycle outgoing dropped messages Encryption using CryptoProviders refactored Added NetUnreliableSizeBehaviour to configure behaviour for unreliable messages above MTU Debug stats show number of received fragments
67 lines
1.4 KiB
C#
67 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace Lidgren.Network
|
|
{
|
|
/// <summary>
|
|
/// Example class; not very good encryption
|
|
/// </summary>
|
|
public class NetXorEncryption : NetEncryption
|
|
{
|
|
private byte[] m_key;
|
|
|
|
/// <summary>
|
|
/// NetXorEncryption constructor
|
|
/// </summary>
|
|
public NetXorEncryption(NetPeer peer, byte[] key)
|
|
: base(peer)
|
|
{
|
|
m_key = key;
|
|
}
|
|
|
|
public override void SetKey(byte[] data, int offset, int count)
|
|
{
|
|
m_key = new byte[count];
|
|
Array.Copy(data, offset, m_key, 0, count);
|
|
}
|
|
|
|
/// <summary>
|
|
/// NetXorEncryption constructor
|
|
/// </summary>
|
|
public NetXorEncryption(NetPeer peer, string key)
|
|
: base(peer)
|
|
{
|
|
m_key = Encoding.UTF8.GetBytes(key);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Encrypt an outgoing message
|
|
/// </summary>
|
|
public override bool Encrypt(NetOutgoingMessage msg)
|
|
{
|
|
int numBytes = msg.LengthBytes;
|
|
for (int i = 0; i < numBytes; i++)
|
|
{
|
|
int offset = i % m_key.Length;
|
|
msg.m_data[i] = (byte)(msg.m_data[i] ^ m_key[offset]);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Decrypt an incoming message
|
|
/// </summary>
|
|
public override bool Decrypt(NetIncomingMessage msg)
|
|
{
|
|
int numBytes = msg.LengthBytes;
|
|
for (int i = 0; i < numBytes; i++)
|
|
{
|
|
int offset = i % m_key.Length;
|
|
msg.m_data[i] = (byte)(msg.m_data[i] ^ m_key[offset]);
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|