to my homepage
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) :
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"
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.
It is a block cipher in CBC
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
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"
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
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