GithubHelp home page GithubHelp logo

cs56-utilities-cryptography's Issues

Make GUI resizable

The length and width of all the swing component classes are hard coded in the main GUI. Refactor code so that the window is scalable

Improve All-cipher function

When click All-cipher, there will be a pop-up windows where you have two columns
on the left one input windows in which you put plaintext
and on the right are four keys input windows so that this makes more sense to the user.

(est. 250 pts)

Improve input textbox function

Make the textbox bigger so that it can take several paragraph of messages
(you also need to make the output textbox bigger in order for this to work)
Also make it scrollable.

(est. 200 pts)

Clean Button doesn't clear RSA

The clean button removes the keys from all the text fields except for the RSA. Clear the RSA key text field when the clean button is pressed.

Confusing Stack Trace Error

Stack trace is printed for a case where an error dialog box is shown. This is confusing for the developers who expect a stack trace when a run-time error occurs, rather than when a dialog box prevents the user from taking this "dangerous" action. Reproduce error by switching to decrypt mode and attempting to keyGen.

Trace:
java.lang.Exception
[java] at edu.ucsb.cs56.projects.utilities.cryptography.GUIActionMethod.checkMode(GUIActionMethod.java:49)
[java] at edu.ucsb.cs56.projects.utilities.cryptography.GUIActionMethod.BifidGenKey(GUIActionMethod.java:487)
[java] at edu.ucsb.cs56.projects.utilities.cryptography.CryptographyGUI.lambda$go$5(CryptographyGUI.java:292)

Ciper TextFields are Not Visible on GUI

The main GUI frame no longer displays the text fields that display the ciphered texts for the different algorithms in the program.

Fix the window display so that the ciphered texts are visible (currently, they are shoved out to the left and resizing the window manually does not appear to resolve the issue)

150 pts

Be More Specific on Bifid Cipher

The key HAS to include at least 1 uppercase letter. Update both the cipher's information in the Info button, as well as when there is incorrect input and the user has clicked on the Bifid Cipher button.

~estimated 50

Project Structure

Create the project, setup build.xml and structure. Add three cipher classes with associated test classes. Make javadoc comments.

Have useful Readme.md file!

~estimated 300

Make the GUI look better

  1. Make the Encryption/Decryption button into a slide button. (like you can slide it to one end to switch it to Encryption, the other end to switch it to Decryption)
  2. Change the “plaintext” label to “ciphered text” when in decryption mode so notify user about the current mode
  3. Change the position where the app shows up from startup

(est. 250 pts)

Output file

Add into interface option to specify where the output file will be saved and what the output file will be called.

Refactor Cipher Classes

Cipher classes perform a similar function and should use a super class and implement inheritance to factor out the common code between ciphers. Rewrite existing ciphers to extend Cipher super class.

Add ability to switch to encrypt mode from dialog box

If you are in decrypt mode and try to generate a key, an error shows up that you must be in encrypt mode. Include a button on the dialog box, that says "Switch to Encrypt Mode", that will directly change the mode for you.

Tutorials

Including instructions in the GUI on how to enter plaintext and keys is important.
~Estimated 200 points

AllCipherGUI.java needs to incorporate RSA

The class to use all ciphers at once in a new window needs to incorporate the RSA cipher which has been implemented. The GUIActionListener which the AllCipherGUI depends on must have respective methods updated to execute all ciphers.
est (250)

Write to file

Issue: Write to a file the plaintext that is to be encrypted, the key, and the encrypted text in one entry. This entry will list the kind of cipher as well and work for the other way around. The file will be written as the program is being run and be finished once the user closes out of the program.

Make more specific error message

Make more specific error message. For example, if the user types letters for the key of a cipher which can only take integer key, the program may prompt "the cipher cannot take integer as keys, use letters instead." (estimates 100 points);

Encrypt with all methods

Issue: Have an option to encrypt or decrypt the plaintext using all the encyption methods and display all of them as such; Affine: dekfjhe, Shift: nckdjfd, Vignere: skjcfns

GUI creation

Create a GUI in which you can input a String, choose the form of encryption and see the outputted encrypted String.

~estimated 180

Fix RSA Cipher algorithm

Currently the algorithm isn't working. The majority of the algorithm is there, however, it does not work correctly. The cipher is based off of the algorithm that is described in the page linked below:
RSA (algorithm)

Allow for strings input with spaces

The strings right now require continuous text input rather than a sentence with spaces. Code the encryption methods such that the input allows for strings with spaces. There can be ways to implement the methods in such a way that they keep track of the spacing between words.

Use gh-pages to publish javadoc

The current build.xml creates javadoc to a CSIL account. Change it to a github page URL, as did in previous labs

Estimate: 150 pts

Substitution Cipher

Add in substitution cipher along with test class and javadoc comments.

~estimated 250

Make the encryption work

From my testing, it does not work. It could be that the README does not have proper instructions as to how to do it, but either the README needs to be updated or the implementation needs to change

RSA cipher not on main page and TextFields are too large

It gets confusing when there is a separate window for the RSA cipher and all the other ciphers are on the main page. The functionality for the RSA cipher should be included on the main page. The text areas are too large and need to be sized down to make the GUI look better and allow for more room for more ciphers. Center Panels need to be refactored to be aligned and relative to one GridBagLayout, not multiple.

(est. 150)

Change the information page

Change the information page (the one pops up when clicking info), correct the existing typos, add more examples to illustrate how to correctly use the software.

(est. 50 points)

Read in from file

Be able to read in plaintext, key, and encryped/decrypted key from input text file.

Make ciphertext appear in a an area that can be copied/pasted, general GUI improvements.

(1) Package cleanup---separate the GUI from the Ciphers:

Separate the GUI and the ciphers into separate packages:

edu/ucsb/cs56/projects/utilities/cryptography/ciphers
edu/ucsb/cs56/projects/utilities/cryptography/demos

Move the GUI program into edu/ucsb/cs56/projects/utilities/cryptography/demos

Presumably other kinds of demos could go in there as well. (e.g. command line program to convert an entire file from plaintext to ciphertext, and back---but that's for another issue.

(2) When the ciphertext appears in GUI, it is not in a part of the GUI that can be copied/pasted.

Putting it in a widget that allows the contents to be copied.

In addition, make error messages in GUI more user friendly. At the moment, error messages refer use to the "README.md file" for advice on the format of inputs. Instead, put the advice directly into the error messages.

(3) Finally, consider other ways of making the gui easier to figure out. For example, consider having separate input fields for the shift cipher, affine cipher and vignere cipher keys, with the buttons beside each one. Or, propose your own design. Play with the interface for a while and decide what would be an improvement to make it easier for first time users, then do that.

~estimated: 300

Tidy up Repo a bit more

In addition to #7 go ahead and add some screenshots to the README.md once you are done.

~Estimated 50 points

Decryption

Add in decryption for each of the ciphers along with the relevant changes to the GUI.

~estimated 120

Assess project as part of lab07

Since ddu82164 switched into this repo after lab05, making an assessment described in the directions of Lab05 and saving it as w16_lab07.md is worth 200 points.

200 pts.

Generate a key automatically

Add an option that the user doesn't need to read the instruction and pick an appropriate key by himself, but instead a key is randomly generated by the system and stored somewhere (i.e. a temporary file, or show the key on screen when the user clicks a certain button, depending on the actual design for this usage). Also provide the decryption method corresponding to where the key is automatically stored.

Estimated: 250 pts

Define a QUAD encryption method

User need to input four keys and just one string. The string will go through the encryption process as following: first Shift Cipher, then Affine Cipher, then Vignere Cipher and then Bifid Cipher.
The output should be a string that has been encrypted four times using four cipher machines.

(est. 200 pts)

Make number input possible

Originally the App doesn't support number inputs, but it should be better if you can just type in "1201" instead of "one two zero one". And also the decryption method needs to correctly output to strings like "1201" instead of "one two zero one".

(est. 200 pts)

Add "open" and "folder" buttons

Add "open" button that gives a window that let you choose whatever address you want to save your text file, instead of having you type the address out in "save address". Like those windows that you have when you are trying to upload files as attachment of emails. Also add "folder" button that brings up the save location folder so that user can access it directly in the OS. (estimates 150 points);

Make a new welcome page for the application

Make a new welcome page for the application. For example, when the user opens the app for the first time, he/she will be prompted with this new window "welcome" and in this window, there are several pages. For example the first page is an introduction about the app, and second page would be example of how to use shift cipher, the next page would be how to use affine cipher, and so on... Make sure that this welcome page has a checkbox that says "open me everytime the app starts". If deselected, the welcome page will not appear on the next startup. (estimates 150 points);

Decrypt current string

Decrypt the encrypted string immediately rather than having to reenter the string and switch to decryption.
~Estimated 200 points

Brand new GUI (greatly improve the old one)

Divide the GUI into few columns, the leftmost one has a text box that you can input strings,
to the right are four key boxes that you can input keys. next to each key box you have a button to generate random keys and also another button to execute. Rightmost is a output text box.
Basically redesign the old GUI to be a brand new one that makes more sense.

(est. 250 pts)

Mismatching Error Dialog Boxes

When errors occur, the wrong labels and information about the error are shown. (i.e. Error with RSA has Dialog box title: Affine Cipher, Error with Key for RSA says the text input has an error)

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.