Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0xsirsaif/blockit
https://github.com/0xsirsaif/blockit
Last synced: 21 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/0xsirsaif/blockit
- Owner: 0xsirsaif
- License: mit
- Created: 2023-06-27T16:41:40.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-06-30T06:53:07.000Z (over 1 year ago)
- Last Synced: 2024-10-05T19:21:34.763Z (3 months ago)
- Language: Python
- Size: 170 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# BlockIt
BlockIt is a Python package that provides various encryption algorithms and a CLI application for easy encryption and decryption of text. It implements the ShiftEncryption, ReverseEncryption, and MatrixEncryption algorithms and allows dynamic selection of encryption algorithms using Abstract Factory design pattern.
## Deliverables
- [x] Implemented the following encryption algorithms: ShiftEncryption, ReverseEncryption, MatrixEncryption
- [x] Add the `--shift` option to specify the number of shifts to be performed instead of being fixed at 3
- [x] Dockerized the project, enabling easy testing of the application in a containerized environment using docker-compose
- [x] Utilized the Abstract Factory Design Pattern, enabling dynamic creation of encryption algorithms
- [x] Developed a CLI application using `Typer`, facilitating easy text encryption and decryption
- [x] Distributed and published the package on PyPI at https://pypi.org/project/blockit/
- [x] Reimplemented the Reverse Encryption Algorithm and deployed it on Vercel as a FastAPI application. This was necessary due to the previously provided endpoints experiencing timeouts and functionality issues.
- [x] Published a Postman collection for the API endpoints, available at https://documenter.getpostman.com/view/8975155/2s93zB528T
- [x] Utilized semantic commit messages to effectively track the project's progress
- [x] Wrote comprehensive unit tests for all encryption algorithms: ShiftEncryption, ReverseEncryption, MatrixEncryption
- [x] Utilized `pytest` and `pytest-cov` to run tests and generate coverage reports
- [x] Incorporated `pre-commit` hooks to ensure consistent formatting, type checking, and linting before each commit
- [x] Automated formatting and versioning of the package using a `Makefile`
- [x] Documentation including installation instructions, usage guidelines, known issues, testing instructions, and research details.## Installation
### Inside a Docker Container
1. Run `docker-compose up --build` to build the image and run the container
2. Run `docker-compose exec web bash` to enter the container
3. The `blockit` CLI is now available inside the container
4. Or run `python -m blockit` inside the container too### Published CLI
1. Install the package using `pip install blockit`
2. Run `blockit --help` to see the available commands and options
```bash
Usage: blockit [OPTIONS] TEXT ALGORITHM METHOD
╭─ Arguments ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * text TEXT Text to be encrypted/decrypted [default: None] [required] │
│ * algorithm TEXT Encryption algorithm to be used [default: None] [required] │
│ * method TEXT Method to be used: 'Encrypt' or 'Decrypt' [default: None] [required] │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```### Manually
1. Clone the repository, `git clone https://github.com/0xsirsaif/blockit`, and `cd` into it
2. Create a virtual environment, `python -m venv venv`, and activate it, `source venv/bin/activate`
3. Install the dependencies, `pip install -r requirements.txt`
4. Run `python -m blockit --help` to see the available commands and options## Usage
### ShiftEncryption
- default shift value is 3, but can be changed using the `--shift` option
```bash
$ blockit "Hello World" shift Encrypt
Khoor Zruog
``````bash
$ blockit "Khoor Zruog" shift Decrypt
Hello World
```### ReverseEncryption
```bash
$ blockit "Hello World" reverse Encrypt
dlroW olleH
``````bash
$ blockit "dlroW olleH" reverse Decrypt
Hello World
```### MatrixEncryption
```bash
$ blockit "Hello World" matrix Encrypt
``````bash
$ blockit "Hello World" matrix Decrypt
```## Testing
Tests are grouped into three Test Classes: TestShiftEncryption, TestReverseEncryption, and TestMatrixEncryption.
- To run all tests, run the following command:
```bash
$ python -m pytest --cov tests/ -vvs
```- To run a specific test with keyword, run the following command:
```bash
$ python -m pytest --cov tests/ -vvs -k
```## Known Issues
Please be aware that there is currently a bug in the `MatrixEncryption` algorithm. I have been unable to fix it in time for the deadline, but I will continue working on it and will push the fix as soon as possible. I've added a test case for the bug as well.
## License
MIT License