public static DarkRiftReader DecryptReaderRSA(this DarkRiftReader reader, RSAParameters privateKey)
        {
            if (reader.Length > 256)
            {
                throw new ArgumentOutOfRangeException(nameof(reader), "reader mustn't contain more then 256 bytes");
            }

            byte[] data = new byte[256];
            for (int i = 0; i < 256; i++)
            {
                data[i] = reader.ReadByte();
            }

            data = DecryptRSA(data, privateKey);

            DarkRiftWriter writer = DarkRiftWriter.Create();

            writer.WriteRaw(data, 0, data.Length);
            Message        message   = Message.Create(0, writer);
            DarkRiftReader newReader = message.GetReader();

            message.Dispose();
            writer.Dispose();
            reader.Dispose();
            return(newReader);
        }
        public static DarkRiftReader DecryptReaderAES(this DarkRiftReader reader, byte[] key)
        {
            byte[] data = reader.ReadRaw(reader.Length);

            data = Decrypt_Aes(data, key);

            DarkRiftWriter writer = DarkRiftWriter.Create();

            writer.WriteRaw(data, 0, data.Length);
            Message        message   = Message.Create(0, writer);
            DarkRiftReader newReader = message.GetReader();

            message.Dispose();
            writer.Dispose();
            reader.Dispose();
            return(newReader);
        }