Encoding two images (left and right) into two images (q and u)
of the same size without data overhead.
seed = hash(right);
r = Random(seed);
for (x,y) to (WIDTH, HEIGHT):
secret = r.nextInt(255);
q = left[x,y] + right[x,y] + secret;
u = left[x,y] - right[x,y] + secret;
Reconstruction can be done by subtraction q - u which results in left + right + secret - left + right - secret = 2 * right then
divide it by two and the right image can be reconstructed. After that the hash of the reconstructed right image can be calculated and fed to
the PRNG thus allowing left = q - right - secret. (Everything must be done using an odd modulus (e.g. 255))
This method allows you to share two images to Alice and Bob while giving q to Alice and u to Bob. They will only be able
to reconstruct the original images together. The good thing about this method is that you don't need to share a key
or produce data overhead. However, I have no idea how secure it really is.