Aufgabe 1


JS: Verschlüsselung

Laden Sie CryptoJS aus nachfolgender Quelle herrunter.

https://code.google.com/p/crypto-js/


Code
Screenshot
GUI
Screenshot

Inhalt der Datei "page_1.tpl" {config_load file="{$sprache}.conf" section="page_1"} {include file="header.tpl" title=foo} {* MD5-Funktion *} <script type="text/javascript" src="./plugins/md5.js"></script> {* Verschl&uuml;sselungs-Funktion *} <script src="./plugins/aes.js"></script> <script src="./plugins/pbkdf2.js"></script> {* DATEI AUSLESEN *} <script> function file_read(){ // Datei (Immer erste Datei falls mehrere) file = document.getElementById('input').files[0]; if( file ){ // Bereich zum "Lesen" bestimmen start_pointer = 0; end_pointer = file.size; // Funktion zum Einlesen der Datei var reader = new FileReader(); reader.onload = function (event) { // Dateistück entgegennehmen var segment_all_raw = event.target.result.split("base64,"); var segment_raw = segment_all_raw[1]; // Sonderzeichen ersetzen //segment = segment_raw.replace(/%/g, "%25"); //segment = encodeURIComponent( segment ); // MD5-Hashwert var file_md5 = hex_md5( segment_raw ); // Verschlüsselung vorbereiten var md5_pw = hex_md5( "123456789" ); var salt = "%!webtech."; var key128Bits500Iterations = CryptoJS.PBKDF2( md5_pw, salt, { keySize: 128/32, iterations: 500 }); var iv = CryptoJS.enc.Hex.parse( getRandomHex( 32 ) ); // Verschlüsseln und nach Base64 kodieren var encrypted = CryptoJS.AES.encrypt(segment_raw, key128Bits500Iterations, { iv: iv }); // Daten var data_base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64); // alert( data_base64 ); document.getElementById("debug_area").value = encodeURI( data_base64 );// data_base64; // IV var iv_base64 = encrypted.iv.toString(CryptoJS.enc.Base64); // alert( iv_base64 ); document.getElementById("debug_iv").value = encodeURI( iv_base64 ); } // Datei einlesen reader.readAsDataURL( file.slice( start_pointer, end_pointer ) ); } } // Zufalls Hexwert function getRandomHex( length ) { var letters = '0123456789ABCDEF'.split(''); var hex = ''; for (var i = 0; i < length; i++ ) { hex += letters[Math.floor(Math.random() * 16)]; } return hex; } </script> <input type="file" id="input" class="" style="border:0px;" multiple="multiple"> <input type="button" value=" {#lbl_ubertragen#} " onClick="file_read()" id="input_button"> <br /> <p>File:</p> <textarea name="debug_area" cols="100" rows="50" id="debug_area"></textarea> <p>IV:</p> <textarea name="debug_iv" cols="30" rows="3" id="debug_iv"></textarea> {*include file="footer.tpl"*}