Skip to content
Tags give the ability to mark specific points in history as being important
  • v0.4.0
    5b280d32 · v0.4.0 ·
    Release: v0.4.0
  • v0.3.8 Release: v0.3.8
    # General changes
    
    - Add Maven support
    - Add JUnit support
      - Add a variety of testcases for each cipher and subclass polybius
    - Move logger to library and add as submodule
    - Add maven hierarchy
      - rename path Ciphers -> java/org/ciphers
    - All ciphers now also have initialize methods for encrypt and decrypt respectfully
      - In order to split userio inputs for JUnit support on each cipher
    - Fix issue where InformationFiles were not visible by neither the compiler nor the jar, resulting in printInformation() to be excluded
    - Move InformationFiles to maven hierarchy 'resources'
    
    # File changes
    
    - Libraries:
      - Update lib/logger to latest artifact
      - Update lib/userio to latest artifact
      - Rename lib/basicUserIO -> lib/userio
    
    Ciphers.Subclasses.Polybius:
    - Fix issue where digits could not be part of 6x6 tables
    - Rename polibius to have 6x6 in the name
    - Add 5x5 table support
      - 5x5 table letter replacement (defaukt J->I) can be customized
    
    Ciphers.Subclasses.Shift:
    - refactor rename variables
    
    Ciphers.Adfgvx:
    - Replace private modifiers to protected for variables that are accessed by Junit tests
    - Add feature that the keyword for the polybius square can not contain digits
    
    Ciphers.Ciphers:
    - Add initialize encrypt and decrypt method to interface
    - Add OutOfMemoryError for setFileWriteMaterial
    - Fix issue where InformationFiles were not visible by neither the compiler nor the jar, resulting in printInformation() to be excluded
    - Add setKey() for ciphers to easily set keywords
    
    Main:
    - add try finally block to avoid printStackTrace when Ctrl<c> the program
    
    Menu:
    - Add path change of maven hierarchy
    - Make list of unwanted classes to loop through and filter
  • v0.3.7
    50b168bb · v0.3.7 ·
    Release: v0.3.7
    ===User===
    - no new changes
    
    ===Developer===
    - Refactor hierarchy for Maven
    - Add JUnit5 and basic Cipher tests
        - Note: Make derived cipher fields protected if needed access by JUnit tests
    
    Master:
    - Allow to set Logger level via Main.java
    
    Ciphers:
    - setkey(), method to set int variable, is in abstract cipher class
  • v0.3.6 Release: v0.3.6
    - Allow JAR File support. 
        - Fixing a bug where a JAR file cannot be built from the project. Code cleaning is needed in ClassFinder.java.
        - Fixed a bug where the method 'printInformation()' is not added when the cipher's constructor is missing. When 'informationList' is set but 'information' is not set, the method was excluded.
        - Add Jar support for information text files.
    - Add Cipher: Rot13
    - Add Logger. For each class: If you want to log, use `Cipherlogger.LOGGER.log() or any other calling method form java.util.logging`
    - Fixed a bug where the method 'printInformation()' is not added when the cipher's constructor is missing. When 'informationList' is set but 'information' is not set, the method was excluded.
    - Public methods in Ciphers.Ciphers.java that are only meant to be invoked by the menu and not called by a specific cipher (e.g. startCryption() and setInformationFile()) are now only accessible by invoking. That way, if one of these methods is accidentally called, the program handles this issue. If, from a specific cipher, the method is for some reason invoked, this will still give an error. But this implementation is to handle accidental method calling.
    - Move Shift method from Caesar to Subclass for future Rot13 implementation
    
    - Small changes:
        - Add issue page references to README.md to encourage ticket creation.
        - Add cipher information for Caesar and Rot13
        - Rename Cipher interface method 'addInfoToOutputFile()' to 'writeAdditionalInfo()'
        - Add .gitignore
        - Update issue templates
        - Update readme to add Setup (Instructions)
        - Add Run.bat for releases
    
    Ciphers:
    - Add header of 20 to encapsulate 'printInformation()' when having multiple lines.
    - Reworking Cipher.java to diminish public methods (so that these methods cannot be called from a specific cipher. Some methods are meant to only be run by the main code (menu.java)).
    - Add custom exception to prevent public Ciphers.Ciphers.java classes to be called by specific ciphers. It may only be invoked by other classes like menu.java or write.java
    
    Caesar:
     - Fix a bug where the input is changed after shifting. Java is not entirely pass by value after all.
     - Add writing shift to output file.
     - Reworked code a bit.
     
    ClassFinder:
     - Jar file of the project can now successfully be built.
    
    Write:
     - Prepend filename to output.txt
    
    WriteHelpers:
    - Add writeInteger to write a number to the output file
    
    Menu:
    - Allow ciphers to have classes that will not be added to the menu, like a nested exception class.
    - Add log.
    - Add JavaDoc
  • v0.3.5 Release: v0.3.5
    - Add own basicUserIO library as a submodule.
        - Replace local library java file with submodule library.
        - Update code to adjust using basicUserIO library.
    - Add flow diagram .xml
    - Update README.md
    
    Write:
    - Remove 'repeat' operation to support Java 1.8
    
    WriteTables:
    - Fix a bug where a dualheader with char[] yHeader does not have a correct horizontal line length.
  • v0.3.4 Release: v0.3.4
    Add package Ciphers/InformationFiles. Add text files that match the name of a cipher to add multiple lines with ease to the 'printInformation()' method
    - Cleaned up warnings
    
    Menu:
    - Checks if information file exists. If <CIPHERNAME.txt> exists within the Ciphers/InformationFiles package that matches invoked <CIPHERNAME>. Add 'printInformation()' method to the menu that prints text-file. If not exist, use String 'information' set in the cipher's constructor instead. If both do not exist, exclude 'printInformation()' from the menu.
    
    Ciphers:
    - Set 'informationList' for 'printInformation()' if Ciphers/InformationFiles/<CIPHERNAME.txt> textfile exists. Set information for 'printInformaiton() if textfile does not exist and 'information' is set in the cipher's constructor. If neither exist, exlude 'printInformation()' from menu.
    - Add JavaDoc
    
    Adfgvx:
    - Add write xHeader and yHeader to polybius square.
    
    Porta:
    - make some variables final.
  • v0.3.3
    f5c24765 · V0.3.3 ·
    Release: v0.3.3
    - Group cipher algorithms into their own classes in Ciphers.Subclasses. Being Polybius.java, Substitution.java, ColumnarTransposition.java
    - Add WriteTables.java, an extensive class so that all types of tables can easily be written by all ciphers. char[], char[][], int[] and int[][] arrays can be added as headers in any combination.
    - Add WriteHelpers.java, this might be temporary
    
    Ciphers:
    - Resolved an issue where cipher specific data is written twice if it contains any data 'addInfoToOutputFile()'
    - Add JavaDoc
    - Add helper methods for ciphers. This might be moved to its own SubClasses classfile later
    
    Adfgvx:
    - Moved cipher algorithms to Ciphers.Subclasses so that they can be re-used by other ciphers
    - Renamed translate table to substitution table.
    
    Caesar:
    - Remove accidental test method
    
    Porta:
    - Clean up
  • v0.3.1 Release: v0.3.1
  • v0.3.0 Release: v0.3.0
    - Feature #4 added, add methods to package 'Subclasses' and add import Ciphers.Subclasses.CLASSNAME to main cipher
    - Feature #5 added, any public methods in a main cipher class will automatically be added to the method list when that cipher has been selected.
    - Add javadoc comments
    - Optimalized code
    - Code now always calls selected method via the parent method (Cipher.java) for more structure. This prevents methods getting called from multiple classes (not more in Menu.java).
    
    ClassFinder:
    - Change parameter method *find* from String array to String list, this is to add an unknown amount of unlisted classes to filter
    
    Main:
    - Remove unused import
    
    Menu:
    - Improve imports
    - Made code cleaner
    - Better naming of variables and methods
    - Made cipher methods local variable in executeCipher()
    - Less parameters
    
    Ciphers:
    - Better naming of method
    - Remove unused constructor
    - Group called methods by return type
    - Optimalized code
  • v0.2.1 Release: v0.2.1
    **Available Ciphers:**
    - Caesar
    - Adfgvx (Encipher)
    
    **Bugfixes**
    - Fix an issue where the output of the Adfgvx cipher was incorrect
    - Fix various line spacing in CMD
    
    **Added features**
    - Adfgvx file writer expanded, now prints all tables
  • v0.2 Release: v0.2
    Add Cipher: Adfgvx (Encrypt)
    Re-add output file writer function
    Add new ciphers interface method for adding writing material to the file writer
  • v0.1 Release: v0.1
    Caesar cipher
    Code is dynamic