JavaScript in den klassischen eval-Wrapper packen oder eine Nutzlast wieder in Quelltext verwandeln. Verschleierung, keine Verschlüsselung — und Entpacken führt den Code aus, also nur vertrauenswürdige Skripte einfügen.
Läuft lokal in deinem BrowserPacken schreibt JavaScript in den Wrapper eval(function(p,a,c,k,e,d){…}(…)) des klassischen Base62-Packers um: jedes Wort wird durch einen Index in ein Wörterbuch der sortierten eindeutigen Wörter ersetzt, und die Nutzlast behält den Quelltext, wobei Anführungszeichen, Backslashes und Zeilenumbrüche escapt werden. Entpacken wertet eine solche Nutzlast in dieser Seite aus und zeigt das erzeugte JavaScript.
Das ist Verschleierung, keine Verschlüsselung, und beim Entpacken wird der eingefügte Code ausgeführt — also nur Skripte verwenden, denen Sie vertrauen. Beide Schaltflächen arbeiten nur mit dem Text im Feld, es wird nichts hochgeladen und die Seite sendet beim Packen und Entpacken keine Anfrage.
Jedes Wort (Buchstaben, Ziffern, Unterstrich und $) wird durch einen Base-62-Index ersetzt (0-9, dann a-z, dann A-Z), und die eindeutigen Wörter wandern sortiert in das Wörterbuch, das mit der Nutzlast reist. Die Nutzlast ist ein einfach quotierter String, daher werden Anführungszeichen, Backslashes und Zeilenumbrüche escapt statt gelöscht: ein //-Kommentar bleibt Kommentar, und eine Anweisung ohne Semikolon behält ihren Zeilenumbruch.
Das Ergebnis ist normales JavaScript: in eine Seite eingefügt läuft es, und jeder Unpacker, der den Wrapper auswertet, liefert den Originalcode zurück. In diesem Stand wurde der Rundlauf byteweise geprüft — mit escapten Anführungszeichen, regulären Ausdrücken mit Backslashes, Template-Literalen, Blockkommentaren, Dateien ohne Semikolon, CJK-Text, $-Bezeichnern, JSON-Text und Wörterbüchern mit über 60 Wörtern.
Entpacken akzeptiert jede Nutzlast, die sich zu einem String auswerten lässt, auch Packungen desselben Wrappers von anderen Seiten. Das Ergebnisfeld ist schreibgeschützt und syntaxhervorgehoben, die Kopierschaltfläche kopiert den Text.
Beim Entpacken wird die Eingabe in dieser Seite ausgewertet — genau dafür ist der eval()-Wrapper da — also nur Code entpacken, dem Sie vertrauen. Wirft die Nutzlast einen Fehler oder liefert sie keinen JavaScript-Text, erscheint eine Meldung statt eines leeren Felds.
Packen zieht den Code auf eine Zeile und verkleinert wiederholten Code meist: 2,7 KB Handler-Funktionen wurden zu 1,8 KB, 16,7 KB zu 11 KB und 85 KB zu 55 KB, mit 1 bis 5 ms fürs Packen und 0,3 bis 3 ms fürs Entpacken in Chrome.
Da der Wrapper konstruktionsbedingt umkehrbar ist, ist das Ergebnis Verschleierung gegen beiläufiges Lesen — kein Schutz für ein Geheimnis: jeder kann es hier oder in einem anderen Unpacker einfügen und den Quelltext zurückholen.