Code Monkey home page Code Monkey logo

526-final-project's Introduction

526-Final-Project

ICSI Final Project for Dolunay (Luna) Dagci and Jacob Clouse - Spring 2023 GitHub contributors

This is the backend, the frontend is stored at: https://github.com/dolnuea/frontend-alt-n-bit

This project was shown at UAlbany's first ever Showcase Day on April 27th, 2023!

Paper: Alternative N-bit Key Data Encryption for Block Ciphers

Goals:

  1. Figure out hashing, figure out XOR / bitwise (encrypt & decrypt)
  2. Combine the two above, figure out how to encrypt a single block with both
  3. Figure out how to reverse and decrypt that block
  4. Figure out how to chain blocks n number of times (based on user input) - encryption then decryption
  5. Figure out how to add the obfuscation with Alt n bits
  6. Cleanup code, add additional funtionality and potentially Web GUI

How to run this code:

  1. In your destination folder, you have to clone this repo using https://github.com/jacobpclouse/526-Final-Project.git
  2. You will also have to clone the frontend using https://github.com/dolnuea/frontend-alt-n-bit.git
  3. You will need cd into the '526-Final-Project' folder and install requirements.txt using pip install -r requirements.text
  4. You will then need to follow the README.md in the 'frontend-alt-n-bit' folder to install the needed packages
  5. You will run the flask backend using python demo.py
  6. You will run the vue frontend using npm run serve
  7. You should be able to navigate to the webpage via your browser (localhost on port 8080), and test our our project!

Issues:

  • How do we retrieve a public key and multiply it with our own private key? - see in function 'generate_key_pair'
  • How do we determine the block size of our encryption? - measure size of ENCK
  • How to get the data back after decryption(how do we even do that with the hashing?)
  • Need adjustable block size (currently it stays at 32)
  • Need function to adding padding to the test data if it is smaller than the block size (it will just give you an empty result and cause the program to fail during decryption - maybe autokey? Make it random) - Done, implimented just after we get size of ENCK
  • Finally, Add the extra PEP at the end of encryption and decryption
  • Need to port this to a web app (we can wip up a very quick Flask App)
  • Need to find way to use image (convert to bits, convert back - function) - expanding on this, needs to be a certain size or it will not work

Resources:

526-final-project's People

Contributors

jacobpclouse avatar dolnuea avatar

Stargazers

 avatar

Watchers

 avatar  avatar

526-final-project's Issues

Decryption

image
The decryption algorithm is explained in the paper below,
image

Take a look at the Drafts\ECC\WORKING_Multi_with_ecdsa.py file

In this work, ENCK is obtained by multiplying the sender private key
with the receiver public key, or by multiplying the receiver private key with the sender
public key, using the elliptic curve SECP256K1.

I think I have found a snippet that will work for determining ENCK in the Drafts\ECC\WORKING_Multi_with_ecdsa.py file.
We will just need a way to query both the receiver's public key and the sender's private key and then feed them into the program.

Let me know if you think this will work for our purposes.
(The next step is Hashing with SHA256)

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.