Intro: Hello Deer hack Judges, we are a group of 3 first-year CS Students, Shyan, Vishal and Rabten.

Overall: We have created an encryption/decryption application with our own custom algorithm. You can select any type of file, and our application will encrypt the data of said file and return to you the password to decrypt the file.

GUI: We have created a GUI that will allow you to search through your File Explorer and after it is selected you are presented with the option to encrypt or decrypt.

Decrypt: For the Decryption process, the application itself has an encrypted master list of passwords for all files the user has encrypted before. The user DOES NOT have access to this master list. If the user wishes to access/ decrypt one of their files, they must enter the password associated with that file. Furthermore, the file they’re trying to decrypt MUST be a file that has already been encrypted. If any of the clauses are not met, the application will inform the user of the clause not met and prompt them to try again.
# About Our Project

## Inspiration:

Since forming our group, we identified early that the majority of our team's strengths were in back-end development. David told us about his interest in cybersecurity and shared some interesting resources regarding it, from there we had an idea, we just had to figure out what we could practically do with limited man-hours. From there, we settled on biometrics as our identification type and 2-type encryption.

## What it does:

We have an application. When launched you are prompted to choose a file you would like to encrypt. After choosing your file, you must scan your face to lock the file, we call it a 'passface'. From there, your passface is encoded using base64 encryption (so it cannot be used maliciously) and stored. Your file is then encrypted using Fernet encryption (which is very hard to crack without its unique and randomly generated key) and stored in a '.encrypted' file. When you would like to unlock and retrieve your file, reopen the application and browse for the encrypted file locked with your image. After scanning your face, the encoded passface is decoded and compared to your passface attempt. After matching your biometric data to that which is locking the file, your file is decoded and re-assembled to its original file type (.txt, .png, .pptx, .py, etc).

## How we built it:

We started by assigning each member to learn one of the concepts we were going to implement, after that, we divided into two groups to begin writing our two main modules, encoding/decoding and biometric retrieval/comparison. After constructing multiple working and easy-to-implement functions in our modules, we worked together on stitching it all together and debugging it (so many bugs!). We finished our project with a little bit of front-end work, making the GUI more user-friendly, comprehensive error messages etc.

## Challenges we ran into:

We thought the biggest challenge we would face would be the scanning and comparison of faces, none of us had any experience with image scanning through code and we honestly had no idea how to even start to think about doing it. But after asking our good friend ChatGPT, we got pointed in the direction of some useful APIs, and after reading ALOT of documentation, we successfully got our system up and running. The hardest challenge for us was figuring out the best and most secure ways we could reasonably store an encrypted file locally. To overcome this we had to throw alot of ideas at the chalkboard (we sat around a chalkboard for an hour) to come up with useable ideas. We settled on using separate encryption/decryption for the stored files and faces to keep a degree of separation for security, and changing the file to .encrypted so that it is not as easily openable (other than in a text file) and because it looks cool. Implementing all of this and making it work perfectly and consistently proved to be our biggest challenge and time-sink of the weekend.

## Accomplishments that we're proud of:

* getting a working face scanner and comparer, which means we successfully implemented biometric security into our coding project, which we celebrated.
* being able to encrypt and then decrypt any file type was awesome, as this is much harder than simple text and image files.
## What we learned:
We learned alot about the division of labour throughout our project. In hour 1 we struggled to effectively distribute tasks which often resulted in two people effectively doing the same thing, but separately which is a big waste of time. As we progressed, we got much more effective in picking tasks, allocating small tasks to individual people, and creating small teams to tackle a tough function or a debug marathon. We also learned the value of reading documentation; when using cv2 to scan faces we struggled with navigating its functions and implementation through brute force, but after assigning one person to dig their teeth into documentation, our group got a better understanding and we were able to get a function up and running with much less resistance.
Candii is a non-profit blockchain based DeFi application that allows users to support their favourite local businesses and content creators who are affected by the pandemic and the rise of ads on social media platforms. Users can browse a list of local businesses and content creators and treat them with Candii where each Candii is $5 worth of Etherium.

Candii uses the MetaMask API to perform all the transactions between users and the client using their respective MetaMask wallet address. We ensure that 100% of the donations go through to the local businesses and content creators. This is made possible by Coil Web Monetization API. With the support of Coil members, we are able to keep our website up and running.