Javascript小僧:鍵付き換字式+転置式暗号【目的編】 [コンピューター]
なぜ、Javascriptで暗号を作成することになったのか。。
仕様を説明する前に、そうなった経緯、目的を説明すべきだったのですが、
ご容赦下さい。
HTML+Javascriptで機密情報を渡す方法としては、
イヌでもわかるJavaScript講座
Step.15 - 入力ウィンドウを表示する
http://www.red.oit-net.jp/tatsuya/java/prompt.htm
にあるような方法があります。しかし、tatsuyaさんが述べているように
ブラウザでソースを見られてしまっては、パスワードは丸見えです。。
そこで、パスワードを暗号化しておきたいのです。
上記のようなHTMLを作成し、解錠ボタンを押して正しいパスワードを入力
したときのみ、「*******」の部分に機密情報を表示させることを考えます。
上記のコードでは、解錠ボタンを押して「cheese999」を入力すると、
機密情報として「Mach55577」が表示されます。
ブラウザでソースを見ることができる人なら、「cheese999」「Mach55577」
の情報は丸見えです。
「イヌでもわかるJavaScript講座」では、
Step.16 - パスワードを 暗号化!? する
http://www.red.oit-net.jp/tatsuya/java/prompt2.htm
Step.79 - 絶対にバレない パスワードリンク
http://www.red.oit-net.jp/tatsuya/java/prompt3.htm
で解決しています。しかし、ASCIIコード表があれば、Step.16は
突破できます。Step.79は、ディレクトリトラバーサルができない
Webサーバであれば突破できませんが、そうでなければ使えません。
そこで、「cheese999」「Mach55577」を暗号化しておき、ソースを見られても
暗号化アルゴリズムが分からない限り、情報が漏えいしないようにしたいのです。
http://cheese999.blog.so-net.ne.jp/2013-04-29
で紹介したアルゴリズムで「cheese999」「Mach55577」をあらかじめ暗号化
しておきます。
解錠ボタンを押して、入力された文字列と復号した「cheese999」が一致した
ときのみ、「Mach55577」を復号して表示させることにします。そのコードは
次回に紹介します。
仕様を説明する前に、そうなった経緯、目的を説明すべきだったのですが、
ご容赦下さい。
HTML+Javascriptで機密情報を渡す方法としては、
イヌでもわかるJavaScript講座
Step.15 - 入力ウィンドウを表示する
http://www.red.oit-net.jp/tatsuya/java/prompt.htm
にあるような方法があります。しかし、tatsuyaさんが述べているように
ブラウザでソースを見られてしまっては、パスワードは丸見えです。。
そこで、パスワードを暗号化しておきたいのです。
上記のようなHTMLを作成し、解錠ボタンを押して正しいパスワードを入力
したときのみ、「*******」の部分に機密情報を表示させることを考えます。
<html> | |||||
<title>機密情報</title> | |||||
<head lang="ja"> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> | |||||
<script type="text/javascript"> | |||||
<!-- | |||||
// 機密情報の開示 | |||||
function myOpen01(){ | |||||
var Ans1=prompt("パスワードを入力してください",""); | |||||
var Pass1="cheese999"; | |||||
if(Ans1==Pass1){ | |||||
document.getElementById("IDKimitsu01").value="Mach55577"; | |||||
}else{ | |||||
document.getElementById("IDKimitsu01").value="*********"; | |||||
alert( "パスワードが違います!" ); | |||||
} | |||||
} | |||||
// --> | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<h1>機密情報</h1> | |||||
<table border="0"><tr> | |||||
<td><form name="myF06"><input type="text" id="IDKimitsu01" | |||||
value="*********"></form></td> | |||||
</tr></table> | |||||
<br> | |||||
<div align="right"> | |||||
<table border="0"><tr> | |||||
<td><form name="myB03" action="#"> | |||||
<input type="button" value="解錠" onclick="myOpen01()"> | |||||
</form></td> | |||||
</tr></table></div> | |||||
</body> | |||||
</html> | |||||
上記のコードでは、解錠ボタンを押して「cheese999」を入力すると、
機密情報として「Mach55577」が表示されます。
ブラウザでソースを見ることができる人なら、「cheese999」「Mach55577」
の情報は丸見えです。
「イヌでもわかるJavaScript講座」では、
Step.16 - パスワードを 暗号化!? する
http://www.red.oit-net.jp/tatsuya/java/prompt2.htm
Step.79 - 絶対にバレない パスワードリンク
http://www.red.oit-net.jp/tatsuya/java/prompt3.htm
で解決しています。しかし、ASCIIコード表があれば、Step.16は
突破できます。Step.79は、ディレクトリトラバーサルができない
Webサーバであれば突破できませんが、そうでなければ使えません。
そこで、「cheese999」「Mach55577」を暗号化しておき、ソースを見られても
暗号化アルゴリズムが分からない限り、情報が漏えいしないようにしたいのです。
http://cheese999.blog.so-net.ne.jp/2013-04-29
で紹介したアルゴリズムで「cheese999」「Mach55577」をあらかじめ暗号化
しておきます。
解錠ボタンを押して、入力された文字列と復号した「cheese999」が一致した
ときのみ、「Mach55577」を復号して表示させることにします。そのコードは
次回に紹介します。
ご訪問&コメントありがとうございます^^
私には高度すぎて...(^^;)
さっぱり解りませんが...暗号ってワクワクしますよね(^^)
by alba0101 (2013-05-01 11:02)
alba0101さん、
コメントありがとうございます。
本当は暗号なんてなくてもいいのですが。。。悪意を持った人がいなければ。
そうしたら、私もセキュリティの勉強なんてしなくていいのですが。
[__猫]
by cheese999 (2013-05-01 15:24)
ネットの向こうにはどんな人がいるかわかりませんからね。大変なお仕事だと思います。
by いっぷく (2013-05-02 23:00)