Step.16 - パスワードを 暗号化!? する
|
パスワードを入力してリンクするようにしたけど、ソースを見たらバレバレでは全く意味ありません。見ただけでは分からない程度まで暗号化してみましょう。 |
Step テーマ ● String.fromCharCode 文字コード変換 |
実行例※ ちなみにパスワードは pass1です。 |
リスト<script type="text/javascript"><!-- function myEnter(){ myPassWord = prompt("Tatsuya家のパスワードを入力してください",""); if ( myPassWord == String.fromCharCode(112,97,115,115,49) ){ location.href = String.fromCharCode(115,101,99,114,101,116)+".htm"; }else{ alert( "パスワードが違います!" ); } } // --></script> <form> ここは家族専用です→ <input type="button" value="Tatsuya家へ入る" onclick="myEnter()"> </form> |
サンプルだけの HTMLは こちらへ |
説明このサンプルは前回の Step のパスワード比較部分を ソースを見ただけではわからないように 暗号化!? しました。 if ( myPassWord == "pass1" ){ location.href = "secret.htm"; } ↓ if ( myPassWord == String.fromCharCode(112,97,115,115,49) ){ location.href = String.fromCharCode(115,101,99,114,101,116)+".htm"; } String.fromCharCode( 文字コード ) は、文字コードを文字に変換します。 ひとつひとつの文字には文字コードが割り付けられています。 コンピュータは結局は 文字ではなく 文字コードで処理しています。 String.fromCharCode() は、その文字コードを 私たちが分かる文字へ変換してくれます。 といっても、文字コード=文字 ですから 表現を変えただけのことです。 文字コード表
該当する文字の上の数字と左の数字を足したものが、その文字コードです。 "s" でしたら、112 + 3 = 115 となります。半角スペースは 32 + 0 = 32 です。 書式は、myStr = String.fromCharCode( 文字コード ) です。 myStr = String.fromCharCode( 115 ) とすれば、myStr には、"s" が入ります。 また、パラメータにカンマ区切りで続けてセットすればその文字列が myStr にセットされます。 myStr = String.fromCharCode( 115, 101, 99, 114, 101, 116 ); とすれば、myStr は "secret" です。 暗号化といっても、ソースが見れる以上、解読は容易です。 今回も暗号化とはいうものの、文字コードはプログラマーにとってはご用達、"s" が 115 なんて当たり前のことなのです。 また、今回の例でいえば、myStr を document.write すればバレバレです。 (^^; ま、検索エンジンから URL を拾われることは なくなったとは思いますが ^^; どうしても JavaScript で解読できないようにしたければ、Step.79 へ。 ● 参考ステップ
Step.15 パスワードを入力してリンクしてみましょう ※ パスワード関連Step.35 秘密の裏口をつくってみましょう ※ パスワード関連 Step.79 パスワードを入力してリンクしてみましょう その3 ※ パスワード関連 ● リファレンス
|
Q&A 1[Q] pwd = "%u30A4%u30CC%u3067%u3082%u308F%u304B%u308B" こういったものも、暗号化されたパスワードということでよろしいのでしょうか? [A] 単にユニコードのURLエンコードされた文字列なので、これも暗号化には ほど遠いかと思われます。 このコードは、escape, unescape にて、エンコード、デコード可能です。 詳しく?は、Step.63 「小さな子ウィンドウを作ってBGMを流してみましょう その3」を参照してください。 |