Skip to content
/ Enfomi Public

Java encryption library that produces self-decrypting jar files

Notifications You must be signed in to change notification settings

achaiah/Enfomi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

Enfomi was created because I have been dissatisfied with the offering of free encryption software out there. For a while, I have been using a PGP utility that also provided password-based encryption and created self-decrypting archives. I really liked the self-decrypting functionality but because it was Windows based I couldn't use it on any other platform. Probably the most mobile solution would have to be something that is written in Java. Unfortunately, none of the programs I have tried seemed to have the features I wanted (for the price I wanted). Long story short - here is my take on encryption. I am not claiming that it is bug free but I have tried to take all due care to ensure the security of encrypted data. Yes, I do eat my own dog food and have been using Enfomi for over 7 years.

Key Functionality

I believe Enfomi offers the most flexible solution available online.
  1. It provides up to 256-bit AES based encryption (for comparison, the current military standards require 128-bit encryption for top secret documents). It supports 28 different types of encryption (many 3DES, IDEA, AES variants)
  2. It can create self-decrypting archives, meaning that you do not need to carry the program with you, just the encrypted file. However, due to the overhead (about 1Mb) of stuff that needs to be stored with the self-decrypting version, you can also create stand-alone encrypted files.
  3. It allows you to select multiple files and folders to be encrypted into one file.
  4. All files are zipped before being encrypted (thus making the archive a little more secure as well as saving space)
  5. Because Enfomi is written in Java, it should be able to run on any platform that has Java 1.7 or above.
  6. You should be able to run Enfomi (or a self-decrypting file created with Enfomi) simply by double-clicking on it.

Cost

Free!

License

Apache v.2.0 (BouncyCastle encryption package is licensed under their own terms - which are akin to a FreeBSD license)

Restrictions

WARNING: This program contains strong encryption functionality (in excess of 128-bit). If you do not live in the United States of America, it may be a violation of your country's laws to download and use this program. It is your duty to review applicable laws and verify that you may indeed posess and utilize Enfomi.

Please be aware that if you want to utilize encryption capabilities in excess of 128-bit then you will have to download and install Unlimited Strength Jurisdiction Policy Files. By default, Enfomi uses 128-bit AES encryption which, as pointed out above, is military grade and should be enough for any purpose. However, if you feel the need for stronger encryption, you can get the necessary policy files here:

Java 7 Policy Files -- Java 8 Policy Files (for all of these read the README in each respective download for installation instructions)

How to use

I hope that Enfomi is pretty easy and straight-forward to use. Depending on whether you are opening Enfomi application for the first time or a self-decrypting archive created with Enfomi, you may see two different screens.

MAIN SCREEN

Main Screen Windows 7

The main screen is shown above. By default it is pre-set to encrypt files and folders that you add to the list by either dragging and dropping them onto the main screen or by clicking the "+" button. To successfully encrypt something follow these steps:

  1. Enter passphrase in the provided box
  2. Choose "encrypt" (default) as your desired option
  3. Add files and/or directories to the list by either dragging & dropping them or clicking the "+" button
  4. Optionally, browse for a folder (directory) where you want to save your resulting encrypted file
  5. Review additional settings under the "Options" tab (described below)
  6. Click "Encrypt" and confirm (retype) your passphrase when prompted
  7. You'll see a window informing you that encryption is in progress. Depending on the size of your files and your computer this might take a bit of time. Please be patient. Enfomi will tell you when it's done.

OPTIONS SCREEN

Options Window Windows 7

This screen should be self-explanatory, and has been preset with the most common desired settings. Here you can change/select two things.
  1. Whether you want a self-decrypting archive (this is recommended and means that the Enfomi program will be packaged as part of the encrypted file that is created)
  2. Your algorithm of choice (preset to a very secure selection but without bothering you to install additional cryptography policies - see "How to get" for an expanded explanation)

DECRYPTION SCREEN

Decryption screen Decryption screen

This screen will be presented if the file you have double-clicked is a self-decrypting archive created with Enfomi. You have a couple of choices here:
  1. To decrypt the data contained in the encrypted file, type in your passphrase, select the directory to decrypt data to and hit "Decrypt"
  2. Because the self-decrypting archive contains the whole Enfomi program, you can use any self-decrypting file to encrypt more data (that will be stored in a separate file). If you hit the "Go to main screen" button you will see the familiar screens described above and will have the full flexibility to create further encrypted files.

New Features in Version 1.3.1

  1. Automatically prefill the "Encrypt To: / Decrypt To:" fields with the directory from which Enfomi was launched. That was high on my annoyance list as you always had to browse first to select your location.
  2. Added confirmation dialog during encryption if the resulting file already exists. No more accidental overwrites!
  3. Updated the list of available cyphers.
  4. Fixed a nasty nasty bug that caused nested folders to not always be archived correctly.
  5. Made Enfomi run exclusively on Java 7 and above. Yes, this is by design. Older versions of Java really did not provide the support I needed to make this tool execute properly
  6. Thanks to Java 7, moved all input/output streams to use the "try-with-resources" programming pattern. No more hang-ups on piped streams.
  7. Added countdown latches during encryption / decryption to make sure all threads finish their work.
  8. Transitioned to the Maven build process. This is a big deal. Now you go to build the code and magic happens!
  9. Moved code to an SVN repository. If you're looking for source code, look there. The CVS repository is now obsolete.

New Features in Version 1.2

  1. Drag and drop functionality now available. Whew... no more clicking that pesky '+' button and having to browse!
  2. The keyboard DELETE key will now remove any selected files from the list.
  3. A lot more (and friendlier!) error reporting (for those of you who like to delete files from the hard drive after adding them to the encryption list ... tsk tsk tsk)
  4. Files with the same name (but coming from different folders) will now be listed with a (1), (2), etc. after the name to show you that the names are the same. Please keep in mind though that Enfomi does not store parent folder information while encrypting so it will preserve only the folder structure of the top-level folders that were added to the encryption list. This means that any files with the same name in the encryption list will be renamed by Enfomi to avoid conflicts during decryption.

FAQ

I will do my best to answer any questions below, left in the comments or otherwise. Here are the most common problems and answers.

Enfomi claims that my password is incorrect during encryption/decryption even though I know I have provided the right password. You might see this error for a couple of reasons. One of the most typical ones is that you are trying to encrypt or decrypt a file that uses encryption in excess of 128-bit and you do not have the correct policy files installed. Please look above in the "How to get" section to learn about installation of correct policy files.

Can I add more files to the already encrypted archive? No, sorry. At this point if you want to add more files you will have to decrypt your archive, add new files and re-encrypt with Enfomi (frankly I'd have to do this behind the scenes for you anyway).

Will compressing my files before encryption save space? No it will not! If you look in the features list, Enfomi already performs zip compression on all files before encrypting them. You will not gain any benefit by compressing your files beforehand.

My files over 1.4GB in size become unusable (Enfomi cannot decrypt them again). Update your version of Enfomi please. Since v1.3.1, Enfomi runs only on Java7 and later. This is a deliberate decision due to the shortcomings of Java 5 and 6.

Future Releases Roadmap

  1. Extract the BC jar to current dir if temp fails. If both fail then give up.
  2. Create a headless version.

About

Java encryption library that produces self-decrypting jar files

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages