Forum

Challenge "Holographic Encryption — Part 1"

Challenge "Holographic Encryption — Part 1"  

  By: admin on April 7, 2017, 10:25 p.m.

Holographic encryption can be performed by employing encryption masks which alter the field before propagation. This makes the image unrecognizable when recorded. You are given three holograms that represent the cipher image and two corrupted encryption masks.
Read more...

 Last edited by: admin on Oct. 31, 2021, 2:55 a.m., edited 1 time in total.

Re: Challenge  

  By: Veselovský on April 9, 2017, 12:20 a.m.

I was not able to manage how to run the holoCryptoFourier.c code in my visual studio 2012.

I want to write my own program but need to know exactly what type of Fourier transform was used.
There are different types of Fourier transform. Can you write here a mathematical formula for computation of the particular Fourier/Inverse Fourier transforms please?

EDIT 1:
Or perhaps just give me what is output of say:
Fourier({{2,3},{7,4}})
Fourier[{{1,4,2,3},{4,5,7,8},{2,1,8,7},{2,1,3,4}}]
Maybe I can figure it out that way what type was used.

Edit 2:
Or someone who uses M. Visual Studio 2012 who is willing to describe how to install all those required libraries and how to setup all parameters in Visual Studio to make it work.

Re: Challenge  

  By: nicosPavlov on April 9, 2017, 9:25 a.m.

The main issue in compiling the code with VS 2012 is not related with external libraries. As described in the program comments, the code is compatible with more recent VS compilers, but not VS 2012, which requires compliance with quite old C standards.

If no recent VS compiler is available, I would recommend using MinGW, which provides a GCC-like compiler with which the code can be compiled. Otherwise, it should be possible to use the C++ compiler of VS, whose requirements are less stringent, but there may still be some hurdles as these C++ libraries are not compliant with recent standards.
For the external libraries, Windows binaries are provided for both FFTW and libtiff, so it is just a matter to link to the provided DLLs. Please not that these libraries are optional, as the standalone code is equivalent.

Concerning the FFT, what the FFTW library calculates is described here:
http://www.fftw.org/fftw3_doc/The-1d-Discrete-Fourier-Transform-_0028DFT_0029.html#The-1d-Discrete-Fourier-Transform-_0028DFT_0029
and here:
http://www.fftw.org/fftw3_doc/Multi_002ddimensional-Transforms.html#Multi_002ddimensional-Transforms

The internal implementation of the FFT provided in the code (that you could also use for writing your own program) provides identical results.

Re: Challenge  

  By: Veselovský on April 10, 2017, 5:03 p.m.

the code is compatible with more recent VS compilers, but not VS 2012

Thank you. I downloaded latest Visual Studio 2017 and there were no problems.

Re: Challenge  

  By: Sgt. Pepper on April 10, 2017, 9:37 p.m.

Is the masklevel N in this challenge 255 or 9?
In the program, the masklevel is fixed at 255, but if the values of the masks used here vary between 0 and 9 only, the phase is approximately 1, which is like applying no mask at all, or am I missing something?

Re: Challenge  

  By: nicosPavlov on April 11, 2017, 12:44 p.m.

Is the masklevel N in this challenge 255 or 9?
In the program, the masklevel is fixed at 255, but if the values of the masks used here vary between 0 and 9 only, the phase is approximately 1, which is like applying no mask at all, or am I missing something?

You are absolutely right, and it was not fully explicit. The code (and attached example) are for the generic case of masks with 255 levels. So to use the code for this challenge, you should set maskLevel to 9.

Re: Challenge  

  By: Sgt. Pepper on April 11, 2017, 6:43 p.m.

Thank you! However, I got another problem:
When trying to decrypt the example-holograms, I can't exactly reproduce the plaintext-phase (the amplitude is fine, though).
I can see the triangle, but the values don't match…
I didn't change the code of the program and use the internal FFT-implementation.

Re: Challenge  

  By: nicosPavlov on April 12, 2017, 2:43 a.m.

This behaviour can happen and is normal behaviour. I would rather not explain why, as this would point towards hints already.

Re: Challenge  

  By: Integral on April 27, 2017, 5:16 p.m.

I do not understand the logic used in the cart2Polar subroutine for calculating the phase:
double real = REAL(data, k); double imag = IMAG(data, k); REAL(data, k) = sqrt( real*real + imag*imag ); IMAG(data, k) = -atan2(real, imag);The normal arguments for atan2 should be (imag,real) in this order. I do not understand the minus sign either.

The consequence is that if one run:
fftw_complex test; test[0] = 1.0; test[1] = 1.0; cart2Polar(&test, 1, 1); polar2Cart(&test, 1, 1);the initial values (1.0,1.0) are not restored … instead, one has (1.0, -1.0)

Is it a polar to conjugate cartesian ?
Thank you for your reply

Re: Challenge  

  By: nicosPavlov on April 28, 2017, 1:09 p.m.

You're quite entitled to not understand it, I just completely overlooked that mistake. Your formulation is indeed the correct one.

While I should correct it, this mistake should not be an obstacle to solving the challenge. The code is reversible as it is, and it is possible to decrypt the holograms.

Re: Challenge  

  By: AnLeRo on July 12, 2017, 1:02 p.m.

The c source code in the additional zip file has been updated. The values in decryption were not exact, but it was always possible to solve the challenge, because nevertheless the signal was fully recognisable.

Best regards


Currently 37 guests and one member are online.
Powered by the CrypTool project
© 2009-2021 MysteryTwister team