SSブログ

Javascript小僧:鍵付き換字式+転置式暗号【コード編:機密情報伝達】 [コンピューター]

今回は、正しいパスワードを入力したときのみ機密情報を表示するためのHTML+Javascriptを紹介します。Javascriptには、暗号化したパスワードと機密情報を埋め込んでおきます。


           
<html>
<title>機密情報</title>
<head lang="ja">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script type="text/javascript">
<!--
// 初期化
function myInit01(){
document.getElementById("IDKimitsu01").value="*********";
}
// 復号
function myFukugou2(Str3,Str2,Num1){
var str1=""; // 元文字列
// 【暗号文字列を転置(逆スライド)】
var str3=myRotate1(Str3,(Str3.length-Num1));
// 【1文字ずつ配列に格納】
var str3_1=str3.split(''); // 暗号文字
var str2_1=Str2.split(''); // 鍵文字
var str1_1=str3.split(''); // 元文字(仮で暗号文字列を代入)
// 【元文字列を計算】
var myCharNm1=0;
var myCharNm2=0;
var myCharNm3=0;
var i=0;
for(i=0;i<str3_1.length;i++){
myCharNm3=myCharNum1(str3_1[i]); // 暗号文字の番号
myCharNm2=myCharNum1(str2_1[i]); // 鍵文字の番号
myCharNm1=myCharNm3-myCharNm2; // 元文字の番号
if(myCharNm1<1){myCharNm1+=62} // 1より小さければ、62を足す
str1_1[i]=myNumChar2(myCharNm1); // 元文字
str1+=str1_1[i]; // 元文字列
}
return (str1)
}
// 【文字列を転置(スライド)】
str3=myRotate1(str3,Num1);
return (str3)
}
// 文字から文字の番号を得る
function myCharNum1(Char1){
// 【文字⇒ASCIIコード変換】
var num1=Char1.charCodeAt(0);
// 【ASCIIコード⇒文字の番号変換】
// A:65(0x41)⇒1
// Z:90(0x5A)⇒26
if((num1>=65)&&(num1<=90)){
return (num1-64)
// a:97(0x61)⇒27
// z:122(0x7A)⇒52
}else if((num1>=97)&&(num1<=122)){
return (num1-70)
// 0:48(0x30)⇒53
// 9:57(0x39)⇒62
}else if((num1>=48)&&(num1<=57)){
return (num1+5)
}else{
return (1) // A
}
}
// 文字の番号から文字を得る
function myNumChar2(num1){
var num2=0;
// 【文字の番号をASCIIコードに変換】
// A:1⇒65(0x41)
// Z:26⇒90(0x5A)
if((num1>=1)&&(num1<=26)){
num2=num1+64
// a:27⇒97(0x61)
// z:52⇒122(0x7A)
}else if((num1>=27)&&(num1<=52)){
num2=num1+70
// 0:53⇒48(0x30)
// 9:62⇒57(0x39)
}else if((num1>=53)&&(num1<=62)){
num2=num1-5
}else{
num2=65 // A
}
// 【ASCIIコードを文字に変換】
return (String.fromCharCode(num2));
}
// 文字列を指定文字数分、転置(スライド)する。
function myRotate1(Str1, Num1){
// 【引数】
// Str1 : 文字列
// Num1 : スライドする文字数
// 【文字列を配列に格納】
var str1_1=Str1.split(''); // 元文字列
var str2_1=Str1.split(''); // 転置(スライド)後の文字列
// 【指定文字数の確認、修正】
var num2=Num1;
// 指定文字数が文字列長より小さくなるまで文字列長を引く
while(num2>str1_1.length){num2-=str1_1.length}
// 指定文字数がマイナスだったら、符号をプラスにする
if(num2<0){num2=0-num2}
// 【転置(スライド)】
var i=0;
var j=0;
var str2="";
for(i=0;i<str1_1.length;i++){
// 転置後の文字を格納する配列の添字
j=i+num2;
// 文字列長以上だったら、文字列長を引く
if(j>=str1_1.length){j-=str1_1.length}
// 転置
str2_1[j]=str1_1[i]
}
// 【転置後の文字列を生成】
for(i=0;i<str2_1.length;i++){
str2+=str2_1[i]
}
return (str2)
}
// 機密情報の開示
function myOpen01(){
var Ans1=prompt("パスワードを入力してください","");
var Pass1=myFukugou2("EJYfuqgvB","hogehoge1",0);
Pass1=myFukugou2(Pass1,"hogehoge1",3);
if(Ans1==Pass1){
var Kimitsu1=myFukugou2("RbV7BI3p5","KureKure2",0);
Kimitsu1=myFukugou2(Kimitsu1,"KureKure2",5);
document.getElementById("IDKimitsu01").value=Kimitsu1;
}else{
document.getElementById("IDKimitsu01").value="*********";
alert( "パスワードが違います!" );
}
}
// -->
</script>
</head>
<body onload="myInit01()">
<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="myB01" action="#">
<input type="button" value="解錠" onclick="myOpen01()">
<input type="button" value="初期化" onclick="myInit01()">
</form></td>
</tr></table></div>
</body>
</html>


このコードをブラウザで開くと、

003.jpg

のようになります。

・「解錠」ボタンを押すと、パスワードを聞いてきます。正しいパスワードを入力したときのみ、「******」が復号された機密情報が表示されます。

・「初期化」ボタンを押すと、機密情報を「******」に戻します。

・myOpen01関数にパスワードと機密情報の暗号文字列、鍵文字列、転置文字数を設定します。上記のコードでは、以下の値を設定しています。ですので、パスワードにcheese999を入力すると、機密情報としてmach55577が開示されます。

・パスワード
 ・元文字列:cheese999
 ・鍵文字列:hogehoge1
 ・転置文字数:3
 ・暗号文字列:EJYfuqgvB

・機密情報
 ・元文字列:mach55577
 ・鍵文字列:KureKure2
 ・転置文字数:5
 ・暗号文字列:RbV7BI3p5

Javascript小僧:鍵付き換字式+転置式暗号【コード編:暗号化】
http://cheese999.blog.so-net.ne.jp/2013-05-02

Javascript小僧:鍵付き換字式+転置式暗号【目的編】
http://cheese999.blog.so-net.ne.jp/2013-05-01
ヤバイぜ!(7)  コメント(1)  トラックバック(0) 
共通テーマ:日記・雑感

ヤバイぜ! 7

コメント 1

cheese999

nice! ありがとうございます。[__猫]
by cheese999 (2013-05-06 05:31) 

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。