Check this out:
-------
Original idea by Juaquin Anderson in the comments of the
following thread:
https://plus.google.com/+JuaquinAnderson/posts/L9A3Da8ju3BFWIW, here is the content of the comment:
_________________________________________________
“This has me thinking.. All the structure, in the reverse
iteration, and the sequence of roots, as well as the structure
of the level sets with the escape time algorithim.
Someone
suggested using fractals for encryption..
A method that would
actually work would be to choose an interesting value of c,
like this one, as the key.
1) If the message has length n bits,
choose a point in the n'th level set. The point can be chosen
by taking a starting point just outside the circle delimiting
the target set, and applying inverse iteration, choosing roots
by sign according to the bits in the sequence to be encoded.
2) the result would be a point (x+yi) that is inside the nth level
set close to the Julia set.
3) encode that point accurately
enough to not confuse with points of a level deeper or further
out, and transmit that point.
4) receive that point.
5) decode
the point by applying forwards iteration with the key value c,
until the point lands in the target set. Tge decoded message
would have n bits determined by writing down the sign of the
imaginary component of the escape orbit for each iteration.
Sounds easy right?
:-)
The efficiency of the encrypted coding scheme has to do with
the fractal dimension of the Julia set, and the degree of
imbalance of the contractivity in the tree traversal of the
Julia set."
_________________________________________________
Juaquin Anderson has taken fractal encryption to another level
beyond the stuff I have been experiment with. He is basically
encoding a sequence of bytes inside a single complex number.
The reverse iteration method for a Julia set is being used to
store information. Lets say a byte. Well, a byte is made up of
a number of bits, on or off. These bits are used to decide which
root to choose for the square root of z during reverse iteration
of (z = z^2 + c). After this reverse iteration, one ends up with
an interesting point p. This point p can actually recreate the
bits of the byte when exposed to forward iteration. The number
of iterations for both forward and reverse iteration directly
corresponds to how many bits it stores. I can only do around 40
bits, but the little program I wrote just does 8 for clarity.
So, for encryption c is the secret key and the cipher text is a
list of complex numbers, or a single complex number if one uses
an arbitrary precision library to calculate both the reverse and
forward iterations.
Here is a simple proof of concept program in C++11 that encodes
a single byte:
http://pastebin.com/4Yu8uSKHIf one can encode a single byte, then one can encode multiple
bytes, and arbitrary binary files.
I know that this is going to work like a charm. I am working on
another proof of concept program that shows how to encode multiple
bytes in a single complex number, instead of the single byte
example shown here...
Any thoughts?
What do you think about the code? Is it crap?
;^)
Thank you all.
Also, I have a fractal encryption scheme that is actually compatible with this using minimal changes of incorporation:
http://www.fractalforums.com/fractals-in-nature/fractal-encryption/What do you think of the code?