N-Code Die Verschlüsselung ist symmetrisch und dadurch nicht analytisch knackbar, sondern nur durch Bruteforce. Die optimale Sicherheit erreicht man durch ein Passwort, das genauso lang ist wie der Text, ansonsten wird die Sicherheit durch die kürzere der beiden Eingaben (in der Regel das Passwort) begrenzt. Ist das Passwort länger als der Text, wird es intern auf Textlänge gekürzt.
Durch die Ausgabe des binär verschlüsselten Codes in ASCII-Zeichen erhöht sich die Textmenge (also Zeichenlänge) um etwa 1-2% des Originals (unkomprimiert). Die optionale Kompression komprimiert den Text vor dem Verschlüsseln mit N-Zip. Eine Reduktion der Textmenge tritt bei normalem Text ab 600-900 Zeichen Textlänge des Originals auf, bei Texten mit nur wenigen unterschiedlichen Zeichen auch früher.
Anführungszeichen und Backslashes (" und \) sollten vermieden werden, da sie automatisch durch einen Backslash geschützt werden (die Funktion wird dadurch aber nicht beeinträchtigt). Um die größtmögliche Kompatibilität zu gewährleisten, sollte die Zeichenkodierung auf ISO 8859-1 eingestellt werden (nicht UTF-8)!
Die maximale Eingabelänge beträgt 10000 Zeichen. Es werden keine Eingaben auf dem Server gespeichert.

Hier ist eine ältere Version von N-Code zu finden, die auf einem anderen Verschlüsselungsverfahren beruht und keine Kompression benutzt.

Codieren:
Eingabe:
Codewort:    Kompression:

'; if($textinput != "" and $ncodepw != "") { $inputlen = strlen($textinput); if($compress) { $textinput = nzip($textinput); $crc = substr(dechex(crc32($textinput)),4,4); } else { $crc = substr(dechex(crc32($textinput)),4,4); } $fittedpw = ""; $textlen = strlen($textinput); $pwlen = strlen($ncodepw); $replicate = floor($textlen / $pwlen); $fraction = $textlen % $pwlen; for($x=0;$x<$replicate;$x++) { $fittedpw .= $ncodepw; } $fittedpw .= substr($ncodepw,0,$fraction); $hexcode = $crc . bin2hex($textinput ^ $fittedpw); if($compress) { $codeout = bin_code("11" . hexbinx($hexcode),"encode"); } else { $codeout = bin_code("10" . hexbinx($hexcode),"encode"); } echo 'Codierter Text: '; if(strlen($codeout) > 75) { echo '
'; } echo wordwrap($codeout,90,"
",1) . '

Textlänge: ' . $inputlen . ' Zeichen
Codelänge: ' . strlen($codeout) . ' Zeichen'; if($compress) echo '
Kompression: ' . round(100*strlen($codeout)/$inputlen,2) . '%'; echo '
'; } if($textinput != "" and $ncodepw == "") { echo 'Codewort eingeben!'; } echo '


Decodieren:
Eingabe:
Codewort:

'; if($codeinput != "" and $decodepw != "") { $codestr = ""; $bincode = bin_code(stripshit2($codeinput),"decode"); if(substr($bincode,1,1) == "1") { $compress = true; } else { $compress = false; } $hexcode = binhexx(substr($bincode,2)); $crc = substr($hexcode,0,4); $hexcode = substr($hexcode,4); $fittedpw = ""; $textlen = strlen($hexcode)/2; $pwlen = strlen($decodepw); $replicate = floor($textlen / $pwlen); $fraction = $textlen % $pwlen; for($x=0;$x<$replicate;$x++) { $fittedpw .= $decodepw; } $fittedpw .= substr($decodepw,0,$fraction); $hexcodearray = explode(".",wordwrap($hexcode,2,".",1)); foreach($hexcodearray as $char) { $codestr .= chr(hexdec($char)); } $decodeout = $codestr ^ $fittedpw; if($crc == substr(dechex(crc32($decodeout)),4,4)) { if($compress) $decodeout = nunzip($decodeout); echo 'Decodierter Text: '; if(strlen($decodeout) > 75) { echo '
'; } echo wordwrap($decodeout,90,"
",1) . '

Textlänge: ' . strlen($decodeout) . ' Zeichen
Codelänge: ' . strlen($codeinput) . ' Zeichen
'; } else { echo 'CRC-Fehler! Falsches Codewort oder fehlerhafte Code-Eingabe!'; } } if($codeinput != "" and $decodepw == "") { echo 'Codewort eingeben!'; } ?>