既存メソッドのエイリアスを自作する。専用ソフトを使用するこのホームページはJavascriptを多用しているため、javascriptがoffのままでは十分にご利用になれません。無線ブロードバンドならイー・モバイル7.アルファベットを一文字ずつずらす+evalメソッド(疑似暗号化)6-1のソースはURLエンコードされており、一目では分かりませんが、上級者に通用するかは分かりません。「charCodeAt」や「length」など、JavaScriptでキーワードとなる文字列がそのまま残っています。そこで、簡単な暗号化を考えてみます。「暗号」というととても難しく考えがちですが、簡単なレベルのものでも十分実用的です。複雑にしすぎても処理能力に影響が出る可能性すらあり、あまりお勧めできません。「原文のaをdに、cをfにする。暗号化された文章では、逆にd→a、f→cにする」。3個ずらしているという法則が漏れなければ、なかなか復号はできません。」というタイトル通り、ヒントをご紹介することに重点を置いているため、1個ずつずらすことを考えます(本当はもう少し複雑な方がいいですが、あくまでも『アイデアの提供』ということで・・・)。下記のフォームに「abc」を入力すれば「bcd」と表示されます。同様にして、第5章の5-1のソース(6-1ではないことに注意してください。URLエンコードする前のソースが必要です。ずらした変換結果をもとに戻す関数は後で考えます。変換したい文字列を入力してください。一文字ずつずらされ、さらにescapeされた変換結果が表示されます。皆さんのソースを使って変換される場合には、必ずバックアップを取ってから行ってください。このページに限らず、当サイトは無保証です。して、一文字ずつずらした上でURLエンコードしておいたものをさらに復元するためのコードが必ず必要になってきます。暗号化するときには、一文字ずつつcharcodeをプラスして、それをさらにURLエンコードしたのだから、復号するときは逆に、URLでコード(unescapeメソッドを使用)して、さらに、一文字ずつcharcodeをマイナスさせればOKのはずです。ソース7-1(このままは使用できません。実際には、下記の「hogehoge」の部分を上のフォームで暗号化したソースに書き換える必要があります。7-2がこの章における最終的な成果になります。i=0;iこの「J="hogehoge";」の部分は実際には、上のフォームで第5章のソース5-1を変換した結果を使う必要があります。上の7-1は、あくまでも元に戻すアルゴリズムが見えやすいようにするためのものです。i=0;iが求める結果となります。本当は、「J="******";(改行)J+="******";」と分割する必要はないのですが、ホームページ上に改行のないソースをテキストエリア内に表示させる時に、一定文字数以上だとMac版FirefoxやMac版Netscapeで正しく表示できない不具合があるため、このようにしています。この講座の目的としてソースを表示させる上で必要な便宜上の処理であり、実際には分割しなくてもMac版FirefoxやNetscapeでもJavaScriptは動きます。)ファイルサイズも単にURLエンコードを施したサンプル6-1に比べて、約7%も減らすことができました。1個ずつずれていることを、出だしの「t%3ETusjoh」で検証してみますと、「t」の前は「s」、「%3E」をデコードすれば「>」であり、その一つ前は「=」、「T」の前は「S」、「u」の前は「t」、「s」の前は「r」、「j」の前は「i」、「o」の前は「n」、「h」の前は「g」。「s=String・・・」となります。この難読化したソースを実際に外部ファイル化して、下記の入力フォーム・サンプルで入力チェックができるようにしています。難読化しても問題なく動作することを確認してください。このフォームで使われているJavaScript(クリックするとダウンロードもしくはソースが表示されます。うまくいかない場合は、右クリック(コンテクストメニュー表示)で、リンク先をファイルに保存してください。)ここでひとつ気になるのは、「一つずつずらしているのでは?」というのが、「String.fromCharCode(y-1);」の部分の「-1」で丸わかりになっているかもということです。これが簡単には分からないようにする方法を次のページでは考えてみます。ビット演算子を用いてみます。目次:改行やタブをなくす・コメントを省く日本語メッセージを英数字だけの文字列に変換する既存メソッドのエイリアスを自作する。HTML・JavaScript暗号化ソフト「SHTML」(免責事項)このホームページの内容に起因する如何なるトラブルに対しても責任を持ちえません。自己責任でご利用ください。