ucsb-cs56-projects / cs56-utilities-cryptography Goto Github PK
View Code? Open in Web Editor NEWcs56-utilities-cryptography
cs56-utilities-cryptography
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
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)
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)
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.
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)
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
Very similar to how the welcome Window Has a button that displays a pictorial explanation, add one to the main GUI.
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
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
(est. 250 pts)
Add into interface option to specify where the output file will be saved and what the output file will be called.
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 other more sophisticated encryption methods to the GUI (i.e. RSA encryption).
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.
Improve the aesthetic of the GUI for user use.
~Estimated 100 points
Including instructions in the GUI on how to enter plaintext and keys is important.
~Estimated 200 points
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)
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. 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);
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
The plaintext in the Bifid Cipher should accept all letters of the alphabet and encrypt/decrypt correctly. Currently the Bifid cipher cannot encrypt and decrypt the letter J correctly.
Create a GUI in which you can input a String, choose the form of encryption and see the outputted encrypted String.
~estimated 180
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)
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.
Delete extra files like the ~ files.
~Estimated 50 points
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
Add in substitution cipher along with test class and javadoc comments.
~estimated 250
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
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 (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)
Be able to read in plaintext, key, and encryped/decrypted key from input text file.
(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
Since the ciphers currently in the project are very simple, it makes sense to add a new class for a more complicated cipher implementation.
~Estimated 300 points
(est. 200 pts)
In addition to #7 go ahead and add some screenshots to the README.md once you are done.
~Estimated 50 points
It is confusing to have to copy and paste from one text area to other after their title's change.
The switching of the text within the "Plain Text" and "Ciphered Text" should happen automatically.
(est. 50)
As professor Conrad suggested in the lecture, use the Lambda Expressions to simplify the codes of all anonymous ActionListener classes, which are created when adding button, to few lines.
suggest points 150
The RSA cipher class functions as a module, but the respective GUI actions need to invoke the methods from the class.
(est. 150)
Add in decryption for each of the ciphers along with the relevant changes to the GUI.
~estimated 120
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.
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
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)
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)
There is no test class for the RSA Cipher. Include a sufficient amount of tests for this cipher.
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. 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 the encrypted string immediately rather than having to reenter the string and switch to decryption.
~Estimated 200 points
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)
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)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.