Team Number: 66
School Name: Silver High School
Area of Science: Computer Science
Project Title: Encryption by Numbers
Problem Definition
The purpose of this project is to create a Java application that will
encrypt and decrypt data or a small message. Though many people are not
aware of it, encryption is used daily, whether it be an individual using a
credit card to order products over the Internet, a top secret military
code sent to troops across seas, or as simple as signing into an email
account with a password. This increased use of encryption calls for a
more secure and easier to use method of encryption. By encrypting data
using matrix multiplication and random numbers, an ambiguous key can be
created with very little effort.
Problem Solution
Two Java programs will be created to encrypt and decrypt data using
matrix multiplication. The encyption program encrypts a message by first
filling an array with the input message. Then, the message is scanned for
each character, and the position(s) of a certain character fill a
"character" matrix, with the ASCII code of the specific character appended
to the end of its matrix. These matrices are then mulptiplied by an array
filled with randomly generated numbers. The encrypted data that results
consists of numerous arrays (one for each separate character in the
message). To decrpyt the data, a program will take the encrypted matrices
and the random matrix. By finding the inverse of the random matrix and
multiplying the encrypted matrices by this, the original character matrices
can be found and the message can be pieced back together.
Progress to Date
The Java application that encrypts data or messages has been created
and successfully encrypts data using matrix multiplication. To encode
each character, we decided to use the ASCII code, as it is a universally
known computer language and would keep the character values (before
decryption) constant. The encrypt program prints out the output code,
which can be very long, depending on the length or complexity of the
message. Before we will be able to create the program to decrypt this
data, we must first incorporate into the encrypt program a class that will
export the key (random matrices) and output code to a data file. This
data file is vital in the creation of the decrypt function because the
output code is so long that it would be very time consuming for a person
to enter every value.
Team Members
Sponsoring Teacher(s)
Project Mentor(s)