Javascript小僧:鍵付き換字式+転置式暗号【仕様編(改)】
見破られないように、仕様を変更しました。
換字式⇒転置式⇒換字式と、暗号化を3回実施することで、元の文字列を推測しづらくしました。
1.使用する文字
・A-Z,a-z,0-9の62種類とします。
・A(1),B(2) - Z(26),a(27) - z(52),0(53) - 9(62)と、各文字に番号を振ります。
文字:ASCIIコード⇒番号
------------------------
A:65(0x41)⇒1
Z:90(0x5A)⇒26
a:97(0x61)⇒27
z:122(0x7A)⇒52
0:48(0x30)⇒53
9:57(0x39)⇒62
2.暗号化
2-1.鍵付き換字式暗号
・元文字列と鍵文字列を1文字ずつ取り出し、それぞれにフラれた数字を足し、62を超えたら、
を引きます。
例:
・元文字列:cheese999
・鍵文字列:hogehoge1
・c+h=29+34=63-62=1⇒A
・h+o=34+41=75-62=13⇒M
・e+g=31+33=64-62=2⇒B
・e+e=31+31=62⇒9
・s+h=45+34=79-62=17⇒Q
・e+o=31+41=72-62=10⇒J
・9+g=62+33=33⇒g
・9+e=62+31=31⇒e
・9+1=62+54=54⇒1
・暗号化文字列:AMB9QJge1
2-2.転置式暗号
・さらに文字の位置をn文字ずつ、ずらします。
例:
・暗号化文字列(転置前):AMB9QJge1
・暗号化文字列(3文字転置後):ge1AMB9QJ
2-3.鍵付き換字式暗号(2回目)
・元文字列:ge1AMB9QJ
・鍵文字列:hogehoge1
・g+h=33+34=67-62=5⇒E
・e+o=31+41=72-62=10⇒J
・1+g=54+33=87-62=25⇒Y
・A+e=1+31=32⇒f
・M+h=13+34=47⇒u
・B+o=2+41=43⇒q
・9+g=62+33=33⇒g
・Q+e=17+31=48⇒v
・J+1=10+54=64-62=2⇒B
・暗号化文字列(最終):EJYfuqgvB
3.復号
暗号化の逆の操作を行う。
3-1.鍵付き換字式復号(1回目)
・暗号化文字列と鍵文字列を1文字ずつ取り出し、それぞれにフラれた数字を引き、
1より小さくなったら、62を足します。
・暗号化文字列(最終):EJYfuqgvB
・鍵文字列:hogehoge1
・E-h=5-34=-29+62=33⇒g
・J-o=10-41=-31+62=31⇒e
・Y-g=25-33=-8+62=54⇒1
・f-e=32-31=1⇒A
・u-h=47-34=13⇒M
・q-o=43-41=2⇒B
・g-g=33-33=0+62=62⇒9
・v-e=48-31=17⇒Q
・B-1=2-54=-52+62=10⇒J
・復号後の文字列:ge1AMB9QJ
3-2.転置式復号
例:
・文字列(転置前):ge1AMB9QJ
・文字列(3文字逆転置後):AMB9QJge1
3-3.鍵付き換字式復号(2回目)
例:
・暗号化文字列:AMB9QJge1
・鍵文字列:hogehoge1
・A-h=1-34=-33+62=29⇒c
・M-o=13-41=-28+62=34⇒h
・B-g=2-33=-31+62=31⇒e
・9-e=62-31=31⇒e
・Q-h=17-34=-17+62=45⇒s
・J-o=10-41=-31+62=31⇒e
・g-g=33-33=0+62=62⇒9
・e-e=31-31=0+62=62⇒9
・1-1=54-54=0+62=62⇒9
・元文字列:cheese999
換字式⇒転置式⇒換字式と、暗号化を3回実施することで、元の文字列を推測しづらくしました。
1.使用する文字
・A-Z,a-z,0-9の62種類とします。
・A(1),B(2) - Z(26),a(27) - z(52),0(53) - 9(62)と、各文字に番号を振ります。
文字:ASCIIコード⇒番号
------------------------
A:65(0x41)⇒1
Z:90(0x5A)⇒26
a:97(0x61)⇒27
z:122(0x7A)⇒52
0:48(0x30)⇒53
9:57(0x39)⇒62
2.暗号化
2-1.鍵付き換字式暗号
・元文字列と鍵文字列を1文字ずつ取り出し、それぞれにフラれた数字を足し、62を超えたら、
を引きます。
例:
・元文字列:cheese999
・鍵文字列:hogehoge1
・c+h=29+34=63-62=1⇒A
・h+o=34+41=75-62=13⇒M
・e+g=31+33=64-62=2⇒B
・e+e=31+31=62⇒9
・s+h=45+34=79-62=17⇒Q
・e+o=31+41=72-62=10⇒J
・9+g=62+33=33⇒g
・9+e=62+31=31⇒e
・9+1=62+54=54⇒1
・暗号化文字列:AMB9QJge1
2-2.転置式暗号
・さらに文字の位置をn文字ずつ、ずらします。
例:
・暗号化文字列(転置前):AMB9QJge1
・暗号化文字列(3文字転置後):ge1AMB9QJ
2-3.鍵付き換字式暗号(2回目)
・元文字列:ge1AMB9QJ
・鍵文字列:hogehoge1
・g+h=33+34=67-62=5⇒E
・e+o=31+41=72-62=10⇒J
・1+g=54+33=87-62=25⇒Y
・A+e=1+31=32⇒f
・M+h=13+34=47⇒u
・B+o=2+41=43⇒q
・9+g=62+33=33⇒g
・Q+e=17+31=48⇒v
・J+1=10+54=64-62=2⇒B
・暗号化文字列(最終):EJYfuqgvB
3.復号
暗号化の逆の操作を行う。
3-1.鍵付き換字式復号(1回目)
・暗号化文字列と鍵文字列を1文字ずつ取り出し、それぞれにフラれた数字を引き、
1より小さくなったら、62を足します。
・暗号化文字列(最終):EJYfuqgvB
・鍵文字列:hogehoge1
・E-h=5-34=-29+62=33⇒g
・J-o=10-41=-31+62=31⇒e
・Y-g=25-33=-8+62=54⇒1
・f-e=32-31=1⇒A
・u-h=47-34=13⇒M
・q-o=43-41=2⇒B
・g-g=33-33=0+62=62⇒9
・v-e=48-31=17⇒Q
・B-1=2-54=-52+62=10⇒J
・復号後の文字列:ge1AMB9QJ
3-2.転置式復号
例:
・文字列(転置前):ge1AMB9QJ
・文字列(3文字逆転置後):AMB9QJge1
3-3.鍵付き換字式復号(2回目)
例:
・暗号化文字列:AMB9QJge1
・鍵文字列:hogehoge1
・A-h=1-34=-33+62=29⇒c
・M-o=13-41=-28+62=34⇒h
・B-g=2-33=-31+62=31⇒e
・9-e=62-31=31⇒e
・Q-h=17-34=-17+62=45⇒s
・J-o=10-41=-31+62=31⇒e
・g-g=33-33=0+62=62⇒9
・e-e=31-31=0+62=62⇒9
・1-1=54-54=0+62=62⇒9
・元文字列:cheese999
「2-3.鍵付き換字式復号(2回目)」の式が間違ってました。。[__猫]
nice! ありがとうございます。
なぜ、Javascriptで暗号???
それは、HTMLで秘密を伝えたいから。。。
イヌでもわかるJavaScript講座
Step.15 - 入力ウィンドウを表示する
http://www.red.oit-net.jp/tatsuya/java/prompt.htm
を参考にしました。。
by cheese999 (2013-04-29 22:20)
ご訪問&コメントありがとうございます^^
お〜!諜報部員並みの暗号ですね(^^;)
ヒッチコックの『鳥』に出たくてオーディションを受けたけど
落ちたペンギン君です(笑)
by alba0101 (2013-04-30 12:48)
alba0101さん、
お褒め(?)いただいて恐縮です。
密林とか、ネットショッピングが、この程度の暗号なら、破りたい放題なのですが。。
ただ、ブラウザで「ソースを表示」とやったとたんにパスワード丸見え、という状況だけは解決したくて、簡単な暗号を作ってみました。[__猫]
by cheese999 (2013-04-30 20:09)