16世紀(jì)法國(guó)外交家Blaise de Vigenère設(shè)計(jì)了一種多表密碼加密算法——Vigenère密碼。Vigenère密碼的加密解密算法簡(jiǎn)單易用,且破譯難度比較高,曾在美國(guó)南北戰(zhàn)爭(zhēng)中為南軍所廣泛使用。
在密碼學(xué)中,我們稱需要加密的信息為明文,用M表示;稱加密后的信息為密文,用C表示;而密鑰是一種參數(shù),是將明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的數(shù)據(jù),記為k。 在Vigenère密碼中,密鑰k是一個(gè)字母串,k=k1k2…kn。當(dāng)明文M=m1m2…mn時(shí),得到的密文C=c1c2…cn,其中ci=mi®ki,運(yùn)算®的規(guī)則如下表所示:
Vigenère加密在操作時(shí)需要注意:
1. ®運(yùn)算忽略參與運(yùn)算的字母的大小寫(xiě),并保持字母在明文M中的大小寫(xiě)形式;
2. 當(dāng)明文M的長(zhǎng)度大于密鑰k的長(zhǎng)度時(shí),將密鑰k重復(fù)使用。
例如,明文M=Helloworld,密鑰k=abc時(shí),密文C=Hfnlpyosnd。
CompleteVictory Yvqgpxaimmklongnzfwpvxmniytm
Wherethereisawillthereisaway