あああああああああ! (言語)
| |
〜 あああああああああ! について、ひよこ陛下
あああああああああ!とは、宇宙海賊やゾンビ、あなたたちが電話を盗聴しようとしている人を混乱させるためのに用いる特殊な暗号のことである。
あああああああああ!にはいくつかの際だった特徴がある。
- 暗号化が極めて速い。
- 対称型暗号で、暗号化と解読の作業が同等である。
- どのような言語の話者であっても、ほぼ例外なく、暗号化された文章を容易に発音できる。
- 暗号化にマシンパワーを必要としない。ASCIIコードであれば8ビットマシン、Unicodeであれば16ビットマシンで十分である。
- 解読キーを必要としない。
- 部外者によって破られる恐れがほぼ無い。
目次 |
[編集] あああああああああ!への翻訳
実際にこの技術により暗号化を行う手法について説明するために、まず、最も簡単で理解しやすい英語(AAAAAAAAA!)での翻訳について解説する(理由については後述する)。
まず、それぞれの文字に固有の番号を振る。これは一般的に使用される文字の配列と一致させる。例えば英語のアルファベットでは以下のようになる。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
それぞれから、その言語の文字数の半分に0.5を足した数字(英語であれば13.5)を引く。下記のようになる。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z -12.5 -11.5 -10.5 -9.5 -8.5 -7.5 -6.5 -5.5 -4.5 -3.5 -2.5 -1.5 -0.5 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5
ある文字を暗号化する場合、以下のようにする。1番目の文字(A)を暗号化する場合、Aに対応する上記の数字の絶対値を、最後から1番目の文字に対応する数字の絶対値で割る。2番目の文字(B)なら、最後から2番目の数字で割ってやる。以下同様である。
12.5/12.5 = 1 11.5/11.5 = 1 10.5/10.5 =1 9.5/9.5 = 1 8.5/8.5 = 1 7.5/7.5 = 1 6.5/6.5 = 1 5.5/5.5 = 1 4.5/4.5 = 1 3.5/3.5 = 1 2.5/2.5 = 1 1.5/1.5 = 1 0.5/0.5 = 1 0.5/0.5 = 1 1.5/1.5 = 1 2.5/2.5 = 1 3.5/3.5 = 1 4.5/4.5 = 1 5.5/5.5 = 1 6.5/6.5 = 1 7.5/7.5 = 1 8.5/8.5 = 1 9.5/9.5 = 1 10.5/10.5 = 1 11.5/11.5 = 1 12.5/12.5 = 1
こうして得られた数字を再び、最初の番号(1 = A, 2 = B, など)によって文字に置き換えてやる。
1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A 1 = A
この法則に従い、暗号化される前の文字を全て、暗号化後の文字に置き換える。最後に「!」マークを添える。
Mommy, lets go to the store = AAAAA, AAAA AA AA AAA AAAAA!
All your base are belong to us! = AAA AAAA AAAA AAA AAAAAA AA AA!
AAAAAA AAA AAAAA! = AAAAAA AAA AAAAA!
[編集] 日本語の場合
日本語には無数の文字があるうえ、その総数は場合によって変わってしまう。現在のところ、コンピューターネットワークでの使用を想定しUnicodeを用いることが一般的であるが、JISやShift JISを用いる場合もあり、方法が一定していないことが目下、最大の問題である。この点については、統一規格を制定するために様々な活動が行われているが、実現していない。
また、これらの暗号化には別の問題も存在している。3種類どの場合であっても文字コード0001に文字が割り当てられておらず、暗号化した文書を表示することができない。こうした「存在しない文字」をどう発音すべきか、長い議論が成されてきた。
現実の暗号化においては、便宜上、文字に割り振る数字を12,354(Unicodeの場合)あるいは9,248(JISの場合)あるいは33,512(Shift JISの場合)だけシフトする方法が考案されている。いまのところ、この手法が最も普及していると言ってよい。
なお、簡易的には文章を全て平仮名に置き換えて暗号化する手法もあるが、同音異義語の多い日本語の場合、この方法を用いると情報を正しく伝えられない可能性があるため、手作業による暗号化など緊急の場合を除いては用いられない。
[編集] 原文を復帰する
この暗号は線形の一対一変換を行っている(別の言い方をすれば、非零行列式に従っている)ため、変換作業を逆に行えば原文を復帰できるはずである。しかしながら、外部の人間がこれを行うことは、ほぼ不可能と言ってよい。
問題は、本来の受信者ですら解読が困難な点である。
[編集] 関連項目
- 暗号化
- あああああああああ!
- The Great Gig in the Sky
- AAAAAAAAAAAAAA!!!!と名付けられた実在のプログラミング言語