ヴィジュネル暗号
ヴィジュネル暗号の弱点は鍵の周期性だけではなく、表にきわめて強い対称性(線形性)があることである。これは解読の大きな手がかりとなる。そこで考えられたのはヴィジュネル表の対称性をなくすために、表の中の文字をランダムに配置することであった(各行と列に26文字が1文字ずつあるという対称性は残る)。これによってカシスキーテストの有効性が著しく減少し、紙とペンだけではほとんど解読できなくなる。もっとも、表の作成と解読に時間がかかるためと、ヴィジュネル暗号が解読できないと思われていたためあまり利用されなかったと言われる。このランダムに配置するという考え方は現代暗号でも線形解読法、差分解読法に対して耐性を持たせるためのSボックスの実装として利用されている。(ランダムに配置した表の実物は長田順行『暗号』165頁にある。ヴィジュネル自身が1586年に発表したが「ヴィジュネル表」とは呼ばれていない。)(ランダムに配置するときわめて解読しにくくなるが、確率論的にきわめて脆弱な表ができることがあるので、脆弱性を検定する必要がある。)。
ヴィジュネル暗号も含み、それ以前の暗号すべてに言えることであるが、これには、鍵に周期性があるということだ。たとえば、鍵「arm」は、4文字目の鍵もaになるし、7文字目もaになる。これが、解読者にとって唯一の手がかりだった。鍵の周期性の問題性に気付かなかったのは、よりアルゴリズム(暗号化の方法)を複雑にすることによって安全にしようとしていたからで、誰も「鍵」の重要性に気付いていなかったのである。では、鍵長を平文と同じにしたら、完全か。確かに、周期性の問題は解決する。しかし、上記のように周期が起こらない鍵であっても、推理することによって解決する場合がある。
そのため、この問題を乱数を利用することで打開しようとしたのだ。また、その数も多くすれば一つの周期も長くなるため、鍵の長さは膨張の一途をたどっていくようになる。また、後に、人力では限界が見えてきた時代に「暗号を行う機械」も出てくるが、これも、周期の長さ、鍵が乱数であることが、大きな目標とされた。
現在の暗号においても、鍵が乱数であるかは、最も重要とされ、アルゴリズムが公開されているからこそ、偏った数を鍵に使用すると、すぐに解読されてしまう。また、鍵の長さも、安全性をはかるものさしとなっている。
右図(ヴィジュネル方陣)を使って暗号化を行う。以下、平文を小文字、暗号文を大文字で表す。例として鍵を arm、平文を code とすると、ヴィジュネル方陣で、aとcの交わりはCであり、rとoはF、mとdはPというように暗号文 C, F, P が得られる。平文が鍵よりも長い場合、鍵を繰り返して用い、最後の平文eはaとの交わりでEとなる。すると、平文「code」は暗号文「CFPE」となる。ここで平文が暗号文と同一の文字になる箇所があるが、解読者にそれは分からない。大事なのは(例では3である)鍵の周期を解読者は知らないということだ。また、この鍵は文字数の制約がないので、鍵の個数は無数である。実際に利用するという観点からみれば、覚えやすいほうがよい(紙に書くとそれが漏れる場合があるので)が、逆に敵に推測されやすいという危険もある。ここでの鍵は、単に例として arm つまり「腕」または「武器」という覚えやすい単語にした。
復号はこの逆をすればよい。つまり、鍵がaで暗号文がCならば、左端のaの行でCの場所を探し、そこから上に辿った最上段の文字が平文cである。鍵が同一であることは当たり前のように感じられるかもしれないが、現代の暗号には、公開鍵暗号のように暗号化と復号の鍵が異なるものもある。