protected override void OnMessage(MessageEventArgs e)
            {
                MsgType msgType = (MsgType)JsonDocument.Parse(e.Data).RootElement.GetProperty("type").GetInt32();

                if (msgType == MsgType.GetKey)
                {
                    Console.WriteLine("Client asks for public key");
                    SendKeyMsg sendKeyMsg    = new SendKeyMsg(Decryptor.RSACreateKeys());
                    string     serializedMsg = JsonSerializer.Serialize <SendKeyMsg>(sendKeyMsg);
                    Send(serializedMsg);
                }

                if (msgType == MsgType.DES)
                {
                    DESDbStringMes ecnryptedDbString = JsonSerializer.Deserialize <DESDbStringMes>(e.Data);
                    DESDbStringMes testEncDbString   = JsonSerializer.Deserialize <DESDbStringMes>(e.Data);
                    ecnryptedDbString.Key = Decryptor.RSAdecrypt(ecnryptedDbString.Key);
                    string      serializedDbString = Decryptor.DESdecrypt(ecnryptedDbString);
                    DbStringMsg dbString           = JsonSerializer.Deserialize <DbStringMsg>(serializedDbString);

                    Console.WriteLine(dbString.surname + ' ' + dbString.name + ' ' + dbString.second_name + ' ' +
                                      dbString.country + ' ' + dbString.picture + ' ' + dbString.exposition);

                    Artist artist = new Artist(
                        dbString.name, dbString.surname, dbString.second_name,
                        new Country(dbString.country), new Movement(dbString.movement), new Picture(dbString.picture),
                        new Exposition(dbString.exposition)
                        );

                    PgConnector.InsertData(artist);

                    //Send("You just have sent \"" + e.Data + "\" to me.");
                }
            }
        public static DESDbStringMes DESencrypt(string data)
        {
            DES DESalg    = DES.Create();
            var encryptor = DESalg.CreateEncryptor();

            using (MemoryStream msEncrypt = new MemoryStream())
            {
                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                {
                    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                    {
                        swEncrypt.Write(data);
                    }
                    DESDbStringMes result = new DESDbStringMes(DESalg.Key, DESalg.IV, msEncrypt.ToArray());
                    return(result);
                }
            }
        }
Beispiel #3
0
        public static string DESdecrypt(DESDbStringMes mes)
        {
            DES DESalg = DES.Create();

            DESalg.Key = mes.Key;
            DESalg.IV  = mes.IV;
            var decryptor = DESalg.CreateDecryptor();

            using (MemoryStream msDecrypt = new MemoryStream(mes.Value))
            {
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                {
                    using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                    {
                        string result = srDecrypt.ReadToEnd();
                        return(result);
                    }
                }
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            DataTable          painters     = SQLiteConnector.get();
            List <DbStringMsg> dbStringMsgs = createDbStringMsgList(painters);

            using (var ws = new WebSocket("ws://localhost:8080/"))
            {
                ws.OnOpen    += (sender, e) => Console.WriteLine("Connected to server.");
                ws.OnMessage += (sender, e) =>
                {
                    MsgType msgType = (MsgType)JsonDocument.Parse(e.Data).RootElement.GetProperty("type").GetInt32();
                    if (msgType == MsgType.SendKey)
                    {
                        string publicKey = JsonDocument.Parse(e.Data).RootElement.GetProperty("key").ToString();
                        Encryptor.publicKey = publicKey;
                        Console.WriteLine("Server send public key: " + publicKey);

                        foreach (var dbStringMsg in dbStringMsgs)
                        {
                            string         msg    = JsonSerializer.Serialize <DbStringMsg>(dbStringMsg);
                            DESDbStringMes decMsg = Encryptor.DESencrypt(msg);
                            decMsg.Key = Encryptor.RSAencrypt(decMsg.Key);
                            msg        = JsonSerializer.Serialize <DESDbStringMes>(decMsg);
                            ws.Send(msg);
                        }
                    }
                    else
                    {
                        Console.WriteLine(e.Data);
                    }
                };

                ws.Connect();
                string getKeyMsg = JsonSerializer.Serialize <GetKeyMsg>(new GetKeyMsg());
                ws.Send(getKeyMsg);
                Console.ReadKey(true);
                ws.Close();
            }
        }