Audio steganography using phase encoding technique
Here is the algorithm:


Divide an input signal $S$ into $n$ consecutive blocks $S_i$ ($i\in\{1,\ldots,n\}$) of length $l$ each
Compute magnitude $A_i$ and phase $\phi_i$ of each block using FFT where A(i)=abs(fft(S{i})) and Phi(i)=angle(fft(S{i})) in MATLAB.

For example, here are the first 3 elements of $\phi$:

(Recall that FFT of real signal has odd symmetry which is clearly visible on plots)
Compute phase differences $\Delta\phi_i=\phi_i-\phi_{i-1}$ for $i\in\{2,\ldots,n\}$
To encode your binary data $d$ of length $m:m&lt;l$ assign
$$\phi_{data}[i]=
\begin{cases}
\pi/2,&amp; d_i=0\\
-\pi/2,&amp; d_i=1
\end{cases}$$ for $i\in\{1,\ldots,m\}$.
Replace following elements of first phase sequence, $ {\phi_1} $,  with ${\phi _{data}}[i]$ for $i\in\{1,\ldots,m\}$ as:
$${\phi '_1}[ {L/2 - m + i}] = {\phi _{data}}[i]\,$$
To maintain odd symmetry property of DFT, repeat same progress as:
$${\phi '_1}[{L/2 + 1 + i}] =  - {\phi _{data}}[{m + 1 - i}]$$
To maintain phase differences sequentially reassign $\phi '_i=\phi_{i-1}+\Delta\phi_i$ for $i\in\{2,\ldots,n\}$
Here are the first 3 elements of $\phi '$ after this step:

(Note how encoded $d$ has affected next blocks)
Reconstruct the signal using inverse FFT applied to each block $A_i exp(j \phi '_i)$ (where $j$ is imaginary unit) and joining all blocks together.


Explanations to many details like the length of blocks and why particular steps are taken are given in the documents you and endolith linked to.

A minimal IPython Notebook version: github.com/danylo-dubinin/secret_in_wav.