%
% schieberegister.tex
%
% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
%
\bgroup
\def\ds{0.7}
\definecolor{darkgreen}{rgb}{0,0.6,0}
\def\punkt#1#2{({(#1)*\ds},{(#2)*\ds})}
\def\rahmen{
	\draw ({-0.5*\ds},{-0.5*\ds}) rectangle ({7.5*\ds},{0.5*\ds});
	\foreach \x in {0.5,1.5,...,6.5}{
		\draw ({\x*\ds},{-0.5*\ds}) rectangle ({\x*\ds},{0.5*\ds});
	}
}
\def\polynom#1#2#3#4#5#6#7#8{
	\node at \punkt{0}{0} {$#1$};
	\node at \punkt{1}{0} {$#2$};
	\node at \punkt{2}{0} {$#3$};
	\node at \punkt{3}{0} {$#4$};
	\node at \punkt{4}{0} {$#5$};
	\node at \punkt{5}{0} {$#6$};
	\node at \punkt{6}{0} {$#7$};
	\node at \punkt{7}{0} {$#8$};
}
\begin{frame}[t]
\frametitle{Implementation der Multiplikation in $\mathbb{F}_2(\alpha)$\uncover<10->{: Schieberegister}}
Rechnen in $\mathbb{F}_2[X]$\only<5->{ und $\mathbb{F}_2(\alpha)$}
ist speziell einfach
\\
Minimalpolynom von $\alpha$: ${\color{darkgreen}m(X) = X^8 + X^4+X^3+X+1}$
(aus dem AES Standard)

\begin{center}
\begin{tikzpicture}[>=latex,thick]

\uncover<4->{
	\fill[color=blue!20]
		\punkt{-0.5}{-0.5} rectangle \punkt{7.5}{0.5};
}

\uncover<2->{
\begin{scope}
	\rahmen
	\node at \punkt{-0.5}{1} [left] {$p(X)=\mathstrut$};
	\node at \punkt{0}{1} {$X^7$\strut};
	\node at \punkt{2.5}{1}{$+$\strut};
	\node at \punkt{3}{1} {$X^4$\strut};
	\node at \punkt{4.5}{1}{$+$\strut};
	\node at \punkt{5}{1} {$X^2$\strut};
	\node at \punkt{6.5}{1}{$+$\strut};
	\node at \punkt{7}{1} {$1$\strut};
	\polynom10010101
\end{scope}}

\uncover<3->{
	\draw[->] ({7.7*\ds},-0.2) to[out=-45,in=45] ({7.7*\ds},-1.8);
	\node at ({8*\ds},-1) [right] {$\mathstrut\cdot X = \text{Shift}$};
}
\uncover<4->{
	\foreach \x in {0,...,7}{
		\draw[->,color=blue!40]
			({\x*\ds},{-0.6*\ds}) -- ({(\x-1)*\ds},{-2+0.6*\ds});
	}
}

\fill[color=white] (-4.65,0) circle[radius=0.01];

\uncover<3->{
	\begin{scope}[yshift=-2cm]
		\uncover<4->{
			\fill[color=blue!20]
				\punkt{-1.5}{-0.5} rectangle \punkt{6.5}{0.5};
			\rahmen
			\polynom00101010
		}
		\node at \punkt{2}{1} {$X^5$\strut};
		\node at \punkt{3.5}{1}{$+$\strut};
		\node at \punkt{4}{1} {$X^3$\strut};
		\node at \punkt{5.5}{1}{$+$\strut};
		\node at \punkt{6}{1} {$X$\strut};
		\begin{scope}[xshift=0.4cm]
			\node at \punkt{-1}{1} [left]
				{$\uncover<5->{{\color{darkgreen}\alpha^4+\alpha^3+\alpha+1=\alpha^8}}\only<-4>{X^8}$\strut};
		\end{scope}
		\node at \punkt{-1}{0} {$1$\strut};
	\end{scope}
}

\uncover<6->{
	{\color<8->{red}
		\draw[->] (-2.5,-1.5) to[out=-90,in=180] (-0.5,-2.7);
	}
	\begin{scope}[yshift=-2.7cm]
		\rahmen
		{\color{darkgreen}
			\polynom00011011
		}
	\end{scope}
}

\uncover<7->{
	\node at ({3.5*\ds},-3.45) {$\|$};

	\begin{scope}[yshift=-4.2cm]
	\rahmen
	\polynom00110001
	\node at \punkt{7.6}{0} [right] {$\mathstrut=\alpha\cdot p(\alpha)$};
	\end{scope}
}

\uncover<8->{
	\node[color=red] at (-3.0,-2.5) {Feedback};
}

\end{tikzpicture}
\end{center}

\end{frame}
\egroup
