From 149c8c39840dd531af11818ee5dea388b89f08e9 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 28 Apr 2013 17:15:23 +0200 Subject: [PATCH] added CFB-Mode-Decryption --- .../CFB-Mode-Decryption.png | Bin 0 -> 30512 bytes .../CFB-Mode-Decryption.tex | 48 ++++++++++++++++++ tikz/CFB-Mode-Decryption/Makefile | 35 +++++++++++++ tikz/CFB-Mode-Decryption/Readme.md | 3 ++ 4 files changed, 86 insertions(+) create mode 100644 tikz/CFB-Mode-Decryption/CFB-Mode-Decryption.png create mode 100644 tikz/CFB-Mode-Decryption/CFB-Mode-Decryption.tex create mode 100644 tikz/CFB-Mode-Decryption/Makefile create mode 100644 tikz/CFB-Mode-Decryption/Readme.md diff --git a/tikz/CFB-Mode-Decryption/CFB-Mode-Decryption.png b/tikz/CFB-Mode-Decryption/CFB-Mode-Decryption.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b6a300be5a4cd9b3f162246f573082cb4adad1 GIT binary patch literal 30512 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 literal 0 HcmV?d00001 diff --git a/tikz/CFB-Mode-Decryption/CFB-Mode-Decryption.tex b/tikz/CFB-Mode-Decryption/CFB-Mode-Decryption.tex new file mode 100644 index 0000000..c7ea43d --- /dev/null +++ b/tikz/CFB-Mode-Decryption/CFB-Mode-Decryption.tex @@ -0,0 +1,48 @@ +\documentclass{article} +\usepackage[pdftex,active,tightpage]{preview} + +\usepackage{tikz} +\usetikzlibrary{calc} + +\begin{document} +\begin{preview} +% thanks to http://tex.stackexchange.com/a/75838/5645 +\tikzset{XOR/.style={fill=black!15,draw,minimum size=13pt,circle,append after command={ + [shorten >=\pgflinewidth, shorten <=\pgflinewidth,] + (\tikzlastnode.north) edge (\tikzlastnode.south) + (\tikzlastnode.east) edge (\tikzlastnode.west) + } + } +} + +\tikzstyle{encrypt}=[draw,fill=black!15,rectangle,minimum size=20pt,inner sep=0pt] +\begin{tikzpicture} +TODO + \newcommand{\n}{3} + \foreach \nr in {1, ..., \n}{ + \node (C\nr) at (0,{(\n-\nr)*3}) {$C_\nr$}; + \node (x\nr)[XOR] at (2,{(\n-\nr)*3}) {}; + \node (D\nr)[encrypt] at (2,{(\n-\nr)*3+1}) {$D$}; + \node (K\nr) at (2,{(\n-\nr)*3+2}) {$K$}; + \node (M\nr) at (4,{(\n-\nr)*3}) {$M_\nr$}; + + \draw[->,very thick] (C\nr) -- (x\nr); + \draw[->,very thick] (x\nr) -- (M\nr); + \draw[->,very thick] (K\nr) -- (D\nr); + \draw[->,very thick] (D\nr) -- (x\nr); + } + + \foreach \nr in {2, ..., \n}{ + \pgfmathtruncatemacro{\tmp}{\nr-1} + \draw[->,very thick] (1, {(\n-\tmp)*3}) -- (1, {(\n-\nr)*3+1}) -- (D\nr); + } + + \node (IV) at (0.5,{\n*3-2}) {$IV$}; + \draw[->, very thick] (IV) -- (D1); + + \node (Mx) at (0,-1) {$\vdots$}; + \node (xx) at (2,-1) {$\vdots$}; + \node (Ex) at (4,-1) {$\vdots$}; +\end{tikzpicture} +\end{preview} +\end{document} diff --git a/tikz/CFB-Mode-Decryption/Makefile b/tikz/CFB-Mode-Decryption/Makefile new file mode 100644 index 0000000..a11979a --- /dev/null +++ b/tikz/CFB-Mode-Decryption/Makefile @@ -0,0 +1,35 @@ +SOURCE = CFB-Mode-Decryption +DELAY = 80 +DENSITY = 300 +WIDTH = 512 + +make: + pdflatex $(SOURCE).tex -output-format=pdf + make clean + +clean: + rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot + +gif: + pdfcrop $(SOURCE).pdf + convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif + make clean + +png: + make + make svg + inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png + +transparentGif: + convert $(SOURCE).pdf -transparent white result.gif + make clean + +svg: + make + #inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg + pdf2svg $(SOURCE).pdf $(SOURCE).svg + # Necessary, as pdf2svg does not always create valid svgs: + inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg + rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg + inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg + rm $(SOURCE)2.svg diff --git a/tikz/CFB-Mode-Decryption/Readme.md b/tikz/CFB-Mode-Decryption/Readme.md new file mode 100644 index 0000000..c158d27 --- /dev/null +++ b/tikz/CFB-Mode-Decryption/Readme.md @@ -0,0 +1,3 @@ +Compiled example +---------------- +![Example](CFB-Mode-Decryption.png)