Image used from Wikimedia commons via https://upload.wikimedia.org/wikipedia/commons/a/a7/Enigma-rotor-BP.jpg; Image by Matt Crypto at English Wikipedia [Public domain]
object-oriented java 2 home > hashing specs

CIT-244: Hashing and GUI Project Specs

Hashing is a concept based on the notion of a one-way algorithm which can produce an output while concealing just about all details of the source of its generated value. This allows users to determine if a file or value is different from an original copy (i.e. corrupted or tampered with) without revealing the actual contents of the file.

Project resources

Consider these resources related to hashing, file i/o, and GUIs

bookProject specification

objective

Create a program with a graphical user interface which provides the user two methods of interacting with the MD5 Hash algorithm:

Method 1: Hash any text values placed in a text box and BOTH display that hash value on the screen and write it to a file given a random name by the program.

Method 2: Read in two files on disk specified by the user via typing in the file names. The program then checks to see if their contents matches or not, and displays a meaningful message and the hash values upon which that message is based.

employ object-oriented design principles and the MVC framework

Using the sample code above from last term, design a MVC-style approach to this GUI program such that presentation is separated from the logic of hashing and comparing the hashes. Don't forget to include means by which the program can issue notes to the user through the interface.

code to interfaces

  1. In NetBeans, connect your existing project (in which you're designing your file checkermachine) to our shared repository. Do this inside NetBeans by right clicking your project >> properties >> libraries >> add project then click Add Project and select the location of the cloned repo.
  2. Implement the FileChangeChecker interface that is inside of our java OO shared repo. Implement all required methods using logic that is appropriate to your particular subclass which is doing the implementing. Some of these values can be hardcoded.

Document, diagram, and push

Create java doc comments to accompany EACH of your methods. Review the java doc doc for more information.

Study this guide called All The UML You Need To Know and create a UML class diagram for all classes in your package. Be sure to carefully include each member variable in each class in your diagrams. Consider the easyUML plugin in NetBeans or draw.io for creating your diagram.

Finally merge your changes in git to your master branch, push your master to github.com, and create a readme.md file using this master markdown guide describing what your code does, includes an image of your UML diagram, and explains HOW to run your code to the user.

arrow_upward top


Page created in 2019 and can be freely reproduced according to the site's copyleft use agreement.