Khan Rubix
Khan Rubix
Team: Queue Underflow

Learn more about this project

THE TEAM

Justin

Justin Duong

Programmer

Jared

Jared Leong

Scrum Master

Cameron

Cameron Li

Programmer

Kevin

Kevin Mouayang

Programmer

Cassandra

Cassandra Pizarro

Programmer

Jacob

Jacob Wurz

Lead Programmer

BACKGROUND

Our Client

Our client is Catalysis group founder and consulting project manager Payson Hall. He works with private and public clients consult with Payson for numerous projects, ranging from million dollar projects to our senior project. Payson was also previously a software engineer.

The Problem

There aren't many ways to transfer private data securely, so Payson approached with a project proposal of creating a program where you can input any type of file and encrypt it. After a file is encrypted, the outputted file should have a .khn extension.

SCOPE

The program should be able to:

  • Read a file text into an array
  • Use byte freuquency analysis as input into a heat map for bit code analysis
  • Use Huffman Coding to compress the size of the array and knock off byte boundaries
  • Run on both Mac and Windows OS
  • Ensure that the size of the file is less than 12MB (max size)
  • Have the ability to decode the array back into the file with the same name
  • SOLUTION

    Our approach to the solution was to create an encryption scheme closely following the implementation envisioned by our client in the project proposal.

    Click to see our prototypes.

    Word Frequency Analysis Huffman Coding Byte Frequency Analysis Rubix Array and Bitshift

    HIGHLIGHTS

    01.

    We were able to learn about the basics of encryption.

    02.

    Our client was always reachable through email or zoom.

    03.

    Great communication between teammates.

    04.

    We were able to improve our coding skills.

    IMPLEMENTATION

    We used C++ and C to create the program in Clion. This was decided due to the fact that it would be easiest to code so that it could run on any kind of OS.

    We were in frequent contact with each other and the client to identify major components in the project and break them down into smaller pieces.

    We created buckets on Flying Donut with the tasks that pertain to each part of the project.

    LESSONS LEARNED

    Implementing different pieces of code is harder than we thought

    Debugging without a UI is difficult

    Learned a new compression algorithm (Huffman)

    Splitting up code that is supposed to work on its own is difficult than we thought

    Learned a little bit of C on the fly since most of us were familiar with C++

    Got to use IDEs we’ve never used before (Intellij, CLion)

    Better to ask questions now rather than waiting

    Making sure the team is on the same page is important