->german version    ->back to my homepage

Dancing Fleas            

I choose the name "dancing_fleas". It is an insinuation on the wild jumps that my tiny little bits of information perform during enciphering and deciphering.

The following links give the Linux version and the windows version(both are zip-archives, the windows version is an archive including a needed dll that has to be unpacked to a fresh directory of your choice) :

    dancing_fleas_2_0                        dancing_fleas_2_0_for_win

I apologize to the dear Mac-users, but since I don't own a Mac, I cannot compile on a Mac-, You could run the windows version under wine though.
The program was written in C++ using the IDE "code::blocks" and the GUI was created using the platform independent tool "wxWidgets" version 2.8.
The windows binary ist rather large(about 2 MB) and contains all necessary wxWidgets-Libraries. The Linux binary needs an wxWidgets 2.8 installed. You can get this for free from the usual repositories. Chances are, you already have it on your disk.
Dancing Fleas is using the same parameter set(roundfunction, roundnumber, feistelrounds) as the file protection algorithm in the package "Academic Signature". You can thus use dancing fleas to convert the protected keyfiles of "Academic Signature" to plaintext for inspection and back to ciphertext.


Start program, select "encipher", select a plaintext document, choose a key of sufficient length (don't leave it on "Geheim" which is german for "secret") and type it into the key-field, press the green OK button. Dancing fleas creates the ciphertext document with matching filename and appends the characters "_c3" at the file extension.


Start program, select "decipher", select a "Ciphertext"-document, type the key into the keyfield, press the green OK-Button. Dancing fleas recreates the plaintext document and removes the "_c3" extension from the filename. The ciphertext will not be altered or deleted.
!watch out, if you attempt to use a wrong key, a file with the correct filename of the plaintext document will be created, but it is useless and may overwrite an already existing valid plaintext file.)


select "hashing fleas", select name of file to hash, press the OK button. Dancing fleas creates a short file having the hashfile name with the characters ".sig" appended. You may inspect this textfile with an editor. You will see the characters "hashing_fleas_65: " followed by the 65 byte hash value in decimal notation.

How does it work?
It is a block cipher in CBC mode, set to a blocksize of 130 bytes. It is based on a symmetrical Feistel Network(4 rounds). The round function consists of a not efficiently backtraceable diffusive information mixing without external parameters. The algorithm is fully self referential(execution depends almost exclusively on the plaintext, you could say the plaintext is interpreted as the algorithm).
I took special care to create a good pseudorandom algorithm. Nonlinear steps(there is a self referential multiplication step involved) necessaryly create an entropy loss. I took care not to accumulate these entropy losses and tried to regain entropy within the next couple of code lines.
Even a statistically flawed roundfunction usually produces pseudorandom looking code with "good" chisquare values if used in a Feistel Network. I took care to use a roundfunction which itself already produces pseudorandom looking values. Two noncommuting diffusor algorithms are used in two parallel threads. One thread applies them in one order, the other in inverted order. Both threads give independent pseudorandom results with appropriate chisquare values. In order to block backtracing, the results of both threads are xored. This is performed twice(two rounds) to give the result of the roundfunction which in turn is used in the Feistel Network(4 feistelrounds).
You may or may not pack the files before enciphering. I believe it is not necessary for security reasons.

Source Code:
The core routines have been updated recently. Thus the source code file, that used to be linked herer for download does not apply any more. Until the current core code is "restyled" for publication, the link remains suspended.