JavaScript を定番の eval ラッパーにパックし、パック済みのペイロードを読み戻せます。暗号化ではなく難読化で、アンパックはコードを実行するため、信頼できるスクリプトだけを貼り付けてください。
ブラウザ内でローカルに実行パックは、定番の Base62 パッカーが使う eval(function(p,a,c,k,e,d){…}(…)) 形式のラッパーに JavaScript を書き換えます。各単語は、整列した一意な単語の辞書へのインデックスに置き換わり、ペイロード側では引用符・バックスラッシュ・改行が削除ではなくエスケープされて元のテキストが保たれます。アンパックはそのペイロードをこのページ内で評価し、得られた JavaScript を表示します。
これは暗号化ではなく難読化で、アンパックは貼り付けたコードを実行します。信頼できるスクリプトだけを扱ってください。どちらのボタンも入力欄のテキストだけを処理し、送信は行わず、実行中にページから外部へのリクエストも発生しません。
単語(英数字・アンダースコア・$)は Base62 のインデックス(0-9、a-z、A-Z の順)に置き換えられ、一意な単語は整列されてペイロードと一緒に運ばれる辞書に入ります。ペイロードはシングルクォートの文字列なので、引用符・バックスラッシュ・改行は削除ではなくエスケープされます。// コメントはコメントのまま残り、セミコロンのない文も改行を保ちます。
出力は普通の JavaScript です。ページに貼り付ければ動作し、ラッパーを評価するアンパッカーならどれでも元のソースに戻せます。この版では、エスケープされた引用符、バックスラッシュを含む正規表現、テンプレートリテラル、ブロックコメント、セミコロンなしのコード、CJK テキスト、$ 付き識別子、JSON テキスト、60 語を超える辞書で往復をバイト単位で確認しています。
アンパックは、文字列として評価できるペイロードなら何でも受け付けます。同じラッパーを別の場所で使って作られたパックも対象です。結果欄は読み取り専用でシンタックスハイライト付き、コピーボタンでテキストをそのままコピーできます。
アンパックは入力内容をこのページ内で評価します(eval() ラッパーの仕組みそのものです)。信頼できるコードだけをアンパックしてください。評価時にエラーが出た場合や JavaScript のテキスト以外が返った場合は、空欄ではなくメッセージで知らせます。
パックはコードを 1 行にまとめ、繰り返しの多いコードでは小さくなります。ハンドラ関数 2.7 KB は 1.8 KB、16.7 KB は 11 KB、85 KB は 55 KB になり、Chrome での所要時間はパックが 1〜5 ms、アンパックが 0.3〜3 ms でした。
ラッパーは仕様上いつでも元に戻せるため、結果は「ざっと見られたくないときの難読化」であり、秘密の保護ではありません。ここでも他のアンパッカーでも貼り付ければソースは復元できます。