https://github.com/putukrisna6/kij-encrypt-decrypt-api
Information and Network Security C | AES, RC4, DES
https://github.com/putukrisna6/kij-encrypt-decrypt-api
aes decryption des encryption rc4 socket symmetric-cryptography
Last synced: about 2 months ago
JSON representation
Information and Network Security C | AES, RC4, DES
- Host: GitHub
- URL: https://github.com/putukrisna6/kij-encrypt-decrypt-api
- Owner: putukrisna6
- License: mit
- Created: 2022-09-21T14:46:10.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-11-01T13:22:17.000Z (over 2 years ago)
- Last Synced: 2025-01-08T01:59:16.658Z (4 months ago)
- Topics: aes, decryption, des, encryption, rc4, socket, symmetric-cryptography
- Language: Jupyter Notebook
- Homepage:
- Size: 106 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Secure Socket Data Transfer using AES, RC4, and DES Encryption
## Introduction
Socket implementation in C++ that allows for encrypted text and file transfers between client and server. The client's data are encrypted using one of the following cryptographic algoritms: [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), [RC4](https://en.wikipedia.org/wiki/RC4), or [DES](https://en.wikipedia.org/wiki/Data_Encryption_Standard). The server then decrypts the encrypted data which allows secure connection via socket. This project a is part of Information and Network Security (C) 2022 course, Department of Informatics, [ITS](https://www.its.ac.id/).
## Collaborators
* [05111940000075 - Daniel Sugianto](https://github.com/daniel5u)
* [05111940000082 - Putu Krisna Andyartha](https://github.com/putukrisna6)
* [05111940000087 - William Handi Wijaya](https://github.com/wiliamhw)
* [05111940000137 - Axel Briano Suherik](https://github.com/axelbrians)## Prerequisites
* Linux Environment
* GCC C++17 Compiler
* Jupyter Notebook## Project Structure
There are 4 main parts of this project, which divides the code into their own domain of concerns.
* Main function
* Socket definition
* Cryptographic algorithms
* Test & evaluation functions### Main
The main functions acts as driver for the whole project. Thanks to the View and Data layers, the data transfer flow is implemented here.
### Socket
Implementation of socket functionalities are defined within the Socket class and its subclasses: Client and Server. Messages transmitted are divided into chunks of 1024 bytes.
### Cryptopgrahic Algorithms
[LSP](https://en.wikipedia.org/wiki/Liskov_substitution_principle) is applied within the algorithm implementations. Each algorithms are represented as their own classes which are subclasses of the Encryption class. These classes are expected to implement the `encrypt` and `decrypt` methods which can be easily used by the main function using polymorphism.
### Test & Evaluation
This part of the project is designed to analyze the differences between the algorithms.
## Usage
* Compile `main.cpp`
```bash
g++ -std=c++17 main.cpp -o main
```* Run two instances of `main`, one as the sender (client) and as the receiver (server)
* As sender, choose whether to send a text through console input or a file
* Then choose which algorithm to use
* Wait until `File received` or `Message received` appears in the console