| | |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <h3>Kryptographie</h3> |
| | | </section> |
| | | <section> |
| | | Mithilfe des nativen <code>crypto</code>-Moduls ist es möglich, moderne sichere kryptografische Verfahren zu verwenden: |
| | | <pre> |
| | | <code class="js" data-trim data-line-numbers> |
| | | const crypto = require("crypto"); |
| | | </code> |
| | | </pre> |
| | | Hierzu nutzt NodeJS selber die weit verbreitete OpenSSL-Bibliothek |
| | | </section> |
| | | <section> |
| | | Einen MD5-Hash erzeugen: |
| | | <pre> |
| | | <code class="js" data-trim data-line-numbers> |
| | | const crypto = require("crypto"); |
| | | |
| | | const hash = crypto.createHash("md5"); |
| | | const md5 = hash.update("abcdefg") |
| | | .digest(); // Buffer (default) |
| | | // .digest("hex") // Hexadezimal |
| | | // .digest("utf8") // Bytes forciert als Chars |
| | | |
| | | console.log(md5); |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <p>Aufgabe</p> |
| | | <p>Erzeuge jeweils den md5- und den sha256-Hash als Hex-Wert der beiden Texte in der Datei <code>text-examples.txt</code> und vergleiche jeweils ihren md5- und sha256-Hash miteinander</p> |
| | | </section> |
| | | <section> |
| | | <h3>Zippen</h3> |
| | | </section> |
| | | <section> |
| | | Mit dem nativen Modul <code>zlib</code> ist es möglich, Kompression in seinen Anwendungen zu nutzen. |
| | | <pre> |
| | | <code class="js" data-trim data-line-numbers> |
| | | const zlib = require("zlib"); |
| | | |
| | | // Komprimieren |
| | | zlib.deflate("abc" /* buffer | string */, (err, compressed) => {}); |
| | | |
| | | // Dekomprimieren |
| | | zlib.inflate(compressed /* buffer */, (err, decompressed) => {}); |
| | | |
| | | // Als Stream |
| | | const zipper = zlib.createDeflate(); |
| | | const unzipper = zlib.createInflate(); |
| | | |
| | | source.pipe(zipper).pipe(target); |
| | | source.pipe(unzipper).pipe(target); |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <p>Aufgabe</p> |
| | | <p>Nutze die einfachen Varianten <code>zlib.deflate</code> und <code>zlib.inflate</code>, um einen beliebigen Text zu komprimieren und anschließend wieder zu dekomprimieren</p> |
| | | </section> |
| | | <section> |
| | | <p>Aufgabe</p> |
| | | <p>Nutze die Stream-Varianten <code>zlib.createDeflate</code> und <code>zlib.createInflate</code>, um jeweils ein getrenntes Programm für die Kompression und Dekompression mit <code>process.stdin</code> und <code>process.stdout</code> zu machen, sodass in der Konsole folgende Nutzung möglich ist:</p> |
| | | <pre> |
| | | <code class="bash" data-trim data-line-numbers> |
| | | echo "abc" | node compress.js | node decompress.js |
| | | cat file.txt | node compress.js > file.zipped |
| | | cat file.zipped | node decompress.js > file.txt |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | </section> |
| | | </div> |
| | | </div> |