GithubHelp home page GithubHelp logo

pedro-ca / multicast-chat Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 3.0 357 KB

💬 C# .NET Windows Form Multicast Chat with optional Advanced Encryption Standard (AES) on messages and customizable parameters.

License: MIT License

C# 100.00%
aes-encryption aes-128 aes rijndael rijndael-128 multicast udp udp-protocol chat chat-application

multicast-chat's Introduction

Introduction

To further demonstrate the capabilities of Multicasting and Symmetric Encryption, the goal of this project is to create multicast chat with optional message cryptography.

In this project the user can send and receive chat messages from other users communicating with a multicast address. If desired, the user can encrypt his messages using the Advanced Encryption Standard (AES), also known as Rijndael. The algorithm key should be a customizable string that converts into a key, while the Initialization vector being be derived directly from the key.

Keep in mind that deriving the IV from the key instead of generating a random value is NOT the best practice. This just has been done for demonstration purposes.

Introdução (Português)

Para demonstrar mais além as capacidades do Multicasting e Criptografia Simétrica, o objetivo deste projeto é criar um chat multicast com criptografia opcional de mensagens.

Neste projeto usuário pode mandar e receber mensage para outros usuário se comunicando com o endereço multicast. Se desejado, o usuário pode criptografar sua mensagem usando Advanced Encryption Standard (AES), também conhecido como Rijndael. A chave do algoritmo deve ser uma string customizada que é convertida em uma chave, com o Vetor de Inicialização sendo derivado diretamente da chave.

Tenha em mente que derivar o IV da chave ao invés de gerar um valor aleatório NÂO é a melhor prática. Isso só foi feito para fins de demonstração.

alt text


Technical Details

The chat is WindowsForms made on C# .NET Framework v4.7.2, utilizing the UdpClient from the library System.Net.Sockets to communicate of a Multicast Address and Port of the user's choice.

Encryption can be optionally toggled on. Utilizing the Advanced Encryption Standard (AES), the user can choose any string smaller or equal to 16 characters as key. The 16 characters length has been choosed because this format is both compatible with key and IV with least conversions, as 16 character string has always raw 128 bits after conversion from the UTF-8 format.

Someone with an encryption key can read all messages by either anyone with the same key and with no key at all. However, a user without a key can only read messages from someone also without a key, while the rest of the encrypted messages are received as "corrupted characters".

Detalhes Técnicos (Português)

O chat é um WindowsForms feito em C# .NET Framework v4.7.2, utilizando o UdpClient da library System.Net.Sockets para se comunicar com o Endereço Multicast e Porta da escolha do usuário.

Criptografica pode ser opcionalmente ligada. Utilizando Advanced Encryption Standard (AES), o usuário pode escolher qualquer string menor ou igual a 16 caracteres como chave. O comprimento de 16 caracteres foi escolhido pois esse formato é compativel com chave e IV com menos conversões, porque 16 strings de 16 caracteres possuem sempre 128 bits brutos depois da conversão vinda do formato UTF-8.

Alguém com a chave de criptografia pode ler todas as mensagems com tanto qualquer um com a mesma chave como alguém sem nenhuma chave. Porém, um usário sem nenhuma chave pode somente ler mensagens de alguém também sem chave, enquanto o resto das mensagens criptografadas são recebidas como caracteres corrompidos.

alt text


Screenshots

alt text

alt text

alt text

multicast-chat's People

Contributors

pedro-ca avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.