Note: Every indexing in this page is done zero-indexed. This includes string indices, matrix indices and vector indices.
Note: Some variables here are named differently from the main algorithm page.
$N = 2^k \text{ s.t. } [k \in \mathbb N] \wedge [N > \max \{|m| : m \in D\}]$ $f_0, f_1, \cdots, f_{N - 1} : \mathbb N^{< N} \mapsto \mathbb C$ $F_i = \text{DFT}[f_i]$ $\mathbf A_{i,j} = F_j(i) \ \ \small (i,j \in \mathbb N^{< N})$
$s_m: \mathbb N \mapsto \mathbb C$
$\mathbf b_i = \text{DFT}[s_m] (i) \ \ \small (i \in \mathbb N^{< N})$ $\widehat m_i = \mathbf x_i \ \ \small (i \in \mathbb N^{< N}) \normalsize \text{ where } \mathbf A \mathbf x =\mathbf b$ $\widehat m \text{ is the encrypted } m \text{ to save.}$
$\mathbf x_i = \widehat m_i \ \ \small (i \in \mathbb N^{< N})$ $g(i) = \mathbf b_i \ \ \small (i \in \mathbb N^{< N}) \normalsize \text{ where } \mathbf A \mathbf x = \mathbf b$ $\mathbf S_i = \text{IDFT}[g] (i) \ \ \small (i \in \mathbb N^{< N})$ $|t| = \mathbf S_0$ $t_i = \mathbf S_{i + 1} \ \ \small (i \in \mathbb N^{< |t|})$ $t \text{ is the decrypted data which is equal to } m.$