JavaScript難読化処理
 のためのヒント

▼▽ Instant Access Menu ▽▼



8.ビット演算子を活用する

ビット演算子については、はじめて聞かれる方は、Googleで検索していただくとして、結論だけ言えば、「&」「|」「<<」「>>」などのビット演算子を使えば、次のような演算が可能です。

そもそも、このビット演算子の話が出たのは、ソース7-2を見た時に、一文字ずつずらすために「-1」というのがそのまま出ているために、それが嫌で、ということで、このビット演算子を思いついたのでした。

上の4つの数字「40」「3」「2」「11」を使って、計算結果が「1」になる式を考えてみます。中学生ぐらいの数学でしょうか? ((40÷3の商)-11)÷2が1になります。ですから、

ソース8-1(このままは使用できません。後でドッキングが必要です。)

この時、変数b2の中に「1」が入っています。これをソース7-2と合体させれば良いことになります。つまり、

ソース8-2
のようになります。

 第7章でも書きましたが、本当は、「J="******";(改行)J+="******";」と分割する必要はないのですが、ホームページ上に、半角スペース・改行のないソースをテキストエリア内に表示させる時に、一定文字数以上だとMac版FirefoxやMac版Netscapeで正しく表示できない不具合があるため、このようにしています。あくまでもこの講座の目的としてソースを表示させる上で必要な便宜上の処理であり、実際には分割しなくてもMac版FirefoxやNetscapeでもJavaScriptは動きます。)

この難読化したソースを実際に外部ファイル化して、下記の入力フォーム・サンプルで入力チェックができるようにしています。難読化しても問題なく動作することを確認してください。

▼ よくある入力フォームとJavaScriptによるチェック(検証用サンプル)
名前:
フリガナ:
メールアドレス:
  

 このフォームで使われているJavaScript
ビット演算子を使った計算は直感では分かりにくいので、プログラムでさせるのが一番です。下記のようなフォームを自作しておくと便利でしょう。

数字を2個所に入力して、ビット演算子を選んで、「計算する」ボタンをクリックしてください。
    
= ↓ 答え
 JavaScriptで処理できる数字の範囲に限られます。結果が大きくなると正しくないようになります。

まだまだ、難読化のためのヒント・アイデアはあります。次のページでは、String.fromCharCodeメソッドを少し変形させるを一挙ご紹介します。第3章では、単純にString.fromCharCodeメソッドのエイリアスを作って、簡単には分からないようにしたのですが、次の章では、さらに一歩踏み込んで、String.fromCharCodeメソッドの亜種?を作ってみます。

  目次:

連絡先:info@broadband-xp.com
【PR】 HTML・JavaScript暗号化ソフト「SHTML」

(免責事項)このホームページの内容に起因する如何なるトラブルに対しても責任を持ちえません。必ず自己責任でご利用ください。