Visual Cryptography
Contents
Description
Screenshots
Features
System requirements
How to start
Download
Description
Visual Cryptography is a special encryption technique to hide information in images in such a way that it can be decrypted by the human vision if the correct key image is used. The technique was proposed by Naor and Shamir in 1994. Visual Cryptography uses two transparent images. One image contains random pixels and the other image contains the secret information. It is impossible to retrieve the secret information from one of the images. Both transparent images or layers are required to reveal the information. The easiest way to implement Visual Cryptography is to print the two layers onto a transparent sheet.
When the random image contains truely random pixels it can be seen as a One-time Pad system and will offer unbreakable encryption.
Source: Rijmenants, Dirk. Cipher Machines & Cryptology: Visual Cryptography, http://users.telenet.be/d.rijmenants
In the image below you can see how you'd have to handle the sheets. You can also test the images on the source site in my program.
Image Source: Rijmenants, Dirk. Cipher Machines & Cryptology: Visual Cryptography, http://users.telenet.be/d.rijmenants
New in version 2.0 (17.02.2017) is the implementation of Visual Steganography as described in this blog post by datagenetics.com. With Visual Steganography you can hide one picture in two others, see screenshots for an example.
Screenshots
Encryption:
Steganography:
First image |
Second image |
Result of overlaying image 1 & 2 |
---|---|---|
Download them and try yourself! Or, if your browser supports that, just drag and drop one over the other - gotta be pixel perfect though!
Features
- Generating a cryptographic secure key
- Encryption of PNG, GIF and JPG images
- Decryption of PNG images
- Hiding an image in two others (Steganography)
- Easy handling
System requirements
Java2 version 8 or newer. You can check if you have it using this command line command (Windows: Start->run->cmd):
java -version
If you get nothing or if it's telling you that it doesn't know the command "java", you probably don't have java. If you get something, it should look like this:
java version "1.8.0_92" Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
If the number is 1.8 or larger, Visual Cryptography should run.
If you don't have Java or an old version, you can download the newest one at "Download".
How to start
If everything works, you can just double-click the jar file, but sometimes a compressing software like WinZip graps this file extension or Java doesn't register itself properly.
If that happens, try running Jarfix first.
Download
Visual Cryptography 2.0 (All operating systems - jar)
Sourcecode Visual Cryptography 2.0
Java:
Oracle pulled a fast one on us, newest (Oracle) Java versions have horrible licencing. So either choose 1.8, the last proper version, or chose OpenJDK:
Java 1.8 via Java.com
Newest Java via adoptOpenJDK.com