This is the first actually finished and fully polished project I've made, at 963 blocks. It encrypts (scrambles) your data so that nobody else can tell what it says (unless you give them the encryption key), but it doesn't use standard 128-bit encryption, so I'm not sure how secure it is. It's really just for fun :) This project uses an Encryption Key along with the Character Index to scramble your data, and you can use these same things to return it to its original state. The Encryption Key is the "password" of sorts that the program uses to determine how to encrypt your data. The Character Index is the list of characters that determines the order/correspondence for certain actions (encode/decode, numerical/character cipher). ============================================= EXPLANATION OF THE UI: Run Sequence: - Encrypt - Takes an input for what to encrypt and then runs the encryption sequence that you have loaded (including the currently active character index). - Decrypt - Functions similarly to encrypt, but runs the sequence in reverse order and with some values modified. This has the opposite effect of encrypting and returns your data to its original form. Edit Sequence: - Enter Encryption Key - Allows you to paste in an encryption key. This is useful if you had one copied down somewhere that you need to use again. - Load Encryption Key Preset - Allows you to load one of the following presets (Somewhat insecure because they are widely available). - Encode only (ID 1): This encodes your data, nothing more (very insecure). - Standard Scratch Encryption (SSE) (ID 2): A simple encryption algorithm that includes mixing, encoding, and ciphering. - Mix Only (ID 3): Uses only mixing actions to avoid making the data any longer than what you put in (since encoding converts each 1 character into a two-digit index number). - Complex Encryption (ID 4): This is similar to SSE in that it uses all the types of actions, but it's much more complex and therefore more secure. - Advanced Methods (ID 5): This uses double encoding, so it may make your data much longer (each character becomes 4), but it's very secure. - Build Custom Encryption Key - This is the option I would recommend, as long as you've read the details on all of the actions (below) and understand how they work. Type in the name of the action and then input the parameters, if the program asks for them. - Unless you really understand how everything works (You would probably need to look through the code for this.), I would recommend using a clumping factor of 1 when the data is not encoded and a factor of 2 when the data is encoded. Settings: - Character Index: - Restore Default - This will reset the character indexto its default value and also recalibrate the project (see below for an explanation of recalibration) - Change Character Index - Allows you to input a custom character index. NOTE: some actions also use a second character index. To change this index, edit the backdrops. Each backdrop should be one character. - Recalibrate - Some functions of this project need to know how long the character is. This button recalibrates the project so that the value for that is stored correctly. YOU SHOULD ALWAYS RUN THIS AFTER CHANGING THE CHARACTER INDEX.
KNOWN ISSUES AND LIMITATIONS: - Using different clumping values (for example, a value of 2 with an odd amount of characters) can cause decryption to not work properly. - You need to go into the code and edit the backdrops manually to change the character index for some actions. - Clicking buttons too fast can cause them to change appearance (they still work correctly, and this can be fixed by pressing the green flag). - Some special characters are not currently supported, such as the double-long hyphen (—) or characters with accents. The rest of your data will still encrypt and decrypt properly (I think) if you include these in your string to encrypt. - The character index can't be any longer than 99 characters. IF YOU FIND ANY OTHERS, PLEASE LET ME KNOW! ============================================= NERD INFO: "Actions" are the different steps the program can take in order to scramble your data. Types of Actions: - Encode - Swaps each character (letters, numbers, and the average special characters found on most keyboards) with its corresponding index number (spot in the Character Index, as a two-digit number). - Decode - Reverses encoding, swapping from two-digit numbers back to the original characters. Requires the same Character Index as was used for the encoding to work correctly and return the correct characters. - Numerical Cipher - Only use this when the data is encoded. Shifts each two-digit number up or down this amount. If the number goes below zero or above the length of the Character index, it overflows and wraps around to the other side. - Character Cipher - Only use this when the data is NOT encoded. Does the same thing as numerical cipher, but for data that isn't currently encoded. - Rotate Mix - Cycles characters in a circle within their groups. - Flip Mix - Flips characters' order within their groups. - Rotate - Cycles characters in a circle, treating the whole of the data as one group. - Flip - Flips the order of all of the characters in the data. Parameters are the numbers you give the program to specify how to run certain actions. Types of Parameters: - Clumping - Treats multiple characters as one, making sure that they stay next to each other and in the same order for actions such as rotate mix or flip. - Grouping - Handles how clumps/characters are grouped together. Each group is processed individually. If there aren't enough clumps/characters left to create a full group, they are treated as one. - Amount - The amount of times to repeat something or the distance to move something. For example, the amount to cipher a character or how far to cycle characters in rotate mix.