\section{Part 1: Substitution Cipher}

\subsection{Analyse}

Als Programmiersprache wurde Go\footnote{\href{https://go.dev/}{https://go.dev/}} ausgewählt. Das Analysetool soll jeden Buchstaben eines Textes auf Häufigkeit untersuchen.

Im Prgram wird mit einem Strukt Array gearbeitet. Darin wird der Buchstabe swowohl groß, als auch klein als String abgespeichert. Außerdem wird die dazugehörige Anzahl mit der Häufigkeit abgespeichert. Dadurch kann nach dem Durchlauf der Datensatz einfach sortiert werden.

Das Alphabet wird im “Unicode Code Point” genutzt damit es einfach verglichen werden kann. Zum Start des Programmes wird das Alphabet in dem ``letters''-Array initialisiert (Abb. \ref{fig:Initialisierung mit Unicode}).

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=0.6\textwidth]{part1/initAlphabet}
        \caption{Initialisierung mit Unicode}
        \label{fig:Initialisierung mit Unicode}
    \end{center}
\end{figure}

Danach wird die angegebene Datei gelesen und als String geparsed. Der String wird anschließend mit der ``strings.Count''-Funktion gelesen und die gelesene Anzahl im Struct gespeichert.

Wenn alle Buchstaben gelesen wurden, kann die totale Anzahl an Buchstaben genommen werden um die Häufigkeit zu berechnen.

Bevor die sortierte Ausgabe erfolgt werden die Daten mit einem Plotter in einer ``barChart.png'' datei gezeichnet (Abb. \ref{fig:Visualisierung von plaintext.txt}).

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=0.9\textwidth]{part1/barChart01}
        \caption{Visualisierung von plaintext.txt}
        \label{fig:Visualisierung von plaintext.txt}
    \end{center}
\end{figure}

Zuletzt wird das soriterte Ergebnis ausgegeben (Abb. \ref{fig:Ergebnis von plaintext.txt}).

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=0.8\textwidth]{part1/result01}
        \caption{Ergebnis von plaintext.txt}
        \label{fig:Ergebnis von plaintext.txt}
    \end{center}
\end{figure}

\newpage

\subsection{Verschlüsselung}

Zur verschlüsselung wird ebenfalls “Unicode Code Point” genutzt. Dadurch kann der jeweilige Text einfach um die angegeben Zahl verschoben werden. Dabei zu beachten ist das Ende des Alphabetes, da von vorne begonnen werden muss. Außerdem sind sollten Kleinbuchstaben und Großbuchstaben beachtet werden. Alle Zeichen die keine Buchstaben sind, werden ohne verschlüsselung ausgegeben. Der key lautet ``florianhoss''.

\subsubsection{Originaler Text (input.txt)}

\VerbatimInput{images/part1/input.txt}

\cite[vgl.][]{bbc}

\newpage

\subsubsection{Verschlüsselter Text (output.txt)}

\VerbatimInput{images/part1/output.txt}

\newpage

Das erneute Ausführen der Analyse ergibt eine komplett unterschiedliche Verteilung der Buchstaben (Abb. \ref*{fig:Visualisierung von input.txt} und Abb. \ref*{fig:Visualisierung von output.txt}).

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=0.9\textwidth]{part1/barChart02}
        \caption{Visualisierung von input.txt}
        \label{fig:Visualisierung von input.txt}
    \end{center}
\end{figure}

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=0.9\textwidth]{part1/barChart03}
        \caption{Visualisierung von output.txt}
        \label{fig:Visualisierung von output.txt}
    \end{center}
\end{figure}

Eine Häufigkeitsanalyse kann Hilfreich sein, da in unterschiedlichen Sprachen andere Häufigkeiten auftreten können und damit der Text einfacher analysiert werden kann.
