小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

密碼學(xué)入門系列(四) 之 維吉尼亞密碼(古典)

 322yangxinxing 2012-03-28
  • 標(biāo) 題:密碼學(xué)入門系列(四) 之 維吉尼亞密碼(古典)
  • 作 者:jackozoo
  • 時(shí) 間:2009-05-23 19:32:48 
  • 鏈 接:http://bbs./showthread.php?t=89667

【文章標(biāo)題】: 密碼學(xué)入門系列(四) 之 維吉尼亞密碼(古典)
【文章作者】: jackozoo
【作者郵箱】: jackozoo@163.com
【作者聲明】: 只是感興趣,沒有其他目的。失誤之處敬請(qǐng)諸位大俠賜教!
--------------------------------------------------------------------------------
【詳細(xì)過程】
  系列聲明: 見一.
  
  維吉尼亞密碼(Vige nere Cipher)簡(jiǎn)介:
  大家熟知, 早前的單一的凱撒密碼保密性能是十分的差的, 因此人們?cè)趩我坏膭P撒密碼的基礎(chǔ)上擴(kuò)展出了多表密碼, 稱之為維吉尼亞密碼. 它是由16世紀(jì)法國(guó)亨利三世王朝的不萊塞-維吉尼亞發(fā)明的. 關(guān)于維吉尼亞的密碼的歷史我這里就不做多的介紹了, 有興趣的朋友可以在互聯(lián)網(wǎng)上搜索相關(guān)文獻(xiàn)查看.
  維吉尼亞密碼的特點(diǎn)是將26個(gè)凱撒密碼表(也即我們常用的Z26)合成一個(gè)表.
  
  如下:
  
  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 
  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 A 
  C D E F G H I J K L M N O P Q R S T U V W X Y Z A B 
  D E F G H I J K L M N O P Q R S T U V W X Y Z A B C 
  E F G H I J K L M N O P Q R S T U V W X Y Z A B C D 
  F G H I J K L M N O P Q R S T U V W X Y Z A B C D E 
  G H I J K L M N O P Q R S T U V W X Y Z A B C D E F 
  H I J K L M N O P Q R S T U V W X Y Z A B C D E F G 
  I J K L M N O P Q R S T U V W X Y Z A B C D E F G H 
  J K L M N O P Q R S T U V W X Y Z A B C D E F G H I 
  K L M N O P Q R S T U V W X Y Z A B C D E F G H I J 
  L M N O P Q R S T U V W X Y Z A B C D E F G H I J K 
  M N O P Q R S T U V W X Y Z A B C D E F G H I J K L 
  N O P Q R S T U V W X Y Z A B C D E F G H I J K L M 
  O P Q R S T U V W X Y Z A B C D E F G H I J K L M N 
  P Q R S T U V W X Y Z A B C D E F G H I J K L M N O 
  Q R S T U V W X Y Z A B C D E F G H I J K L M N O P 
  R S T U V W X Y Z A B C D E F G H I J K L M N O P Q 
  S T U V W X Y Z A B C D E F G H I J K L M N O P Q R 
  T U V W X Y Z A B C D E F G H I J K L M N O P Q R S 
  U V W X Y Z A B C D E F G H I J K L M N O P Q R S T 
  V W X Y Z A B C D E F G H I J K L M N O P Q R S T U 
  W X Y Z A B C D E F G H I J K L M N O P Q R S T U V 
  X Y Z A B C D E F G H I J K L M N O P Q R S T U V W 
  Y Z A B C D E F G H I J K L M N O P Q R S T U V W X 
  Z 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 
  
  
  這樣我們就從傳統(tǒng)的單表替換擴(kuò)展到了多表替換了.  
  
  引入一個(gè)概念:秘匙
  
  在前面的凱撒移位密碼和仿射密碼中, 我們同樣引入了秘匙的概念, 不過那里的秘匙只是一個(gè)或兩個(gè)數(shù)字. 而在這里的秘匙是一個(gè)更為廣義上的秘匙.
  它是一個(gè)串. 不在局限于一個(gè)或兩個(gè)整數(shù).
  
維吉尼亞密碼的原理:
  
  比如明文為JACKOZOO, 秘匙為L(zhǎng)OVE, 則我們的密文是這樣得到的:
  
  
  J對(duì)應(yīng)的密文我們查秘匙為L(zhǎng), 則在第L行中, 找到與第一行中的J對(duì)應(yīng)的字母為 U.
  A對(duì)應(yīng)的密文我們查秘匙為O, 則在第O行中, 找到與第一行中的A對(duì)應(yīng)的字母為 O.
  C對(duì)應(yīng)的密文我們查秘匙為V, 則在第V行中, 找到與第一行中的C對(duì)應(yīng)的字母為 X.
  K對(duì)應(yīng)的密文我們查秘匙為E, 則在第E行中, 找到與第一行中的K對(duì)應(yīng)的字母為 O.
  O對(duì)應(yīng)的密文我們查秘匙為L(zhǎng), 則在第L行中, 找到與第一行中的O對(duì)應(yīng)的字母為 Z. (如果秘匙不夠了,我們就循環(huán)使用秘匙, LOVELOVELO ... )
  Z對(duì)應(yīng)的密文我們查秘匙為O, 則在第O行中, 找到與第一行中的Z對(duì)應(yīng)的字母為 N.
  O對(duì)應(yīng)的密文我們查秘匙為V, 則在第V行中, 找到與第一行中的O對(duì)應(yīng)的字母為 J.
  O對(duì)應(yīng)的密文我們查秘匙為E, 則在第E行中, 找到與第一行中的O對(duì)應(yīng)的字母為 S.
  
  由此得到JACKOZOO在以LOVE作為秘匙的情況下, 其密文為: UOXOZNJS.
  
  
  我們看到維吉尼亞密碼也很好地隱藏了字頻信息.
  但是這里不得不提的是, 維吉尼亞密碼(Vigenere Cipher)相對(duì)于希爾密碼(Hill Cipher)來(lái)說(shuō), 其對(duì)字頻信息的隱藏還不夠徹底.
  這也導(dǎo)致了在19世紀(jì)50年代, 英國(guó)人查爾斯-巴貝奇對(duì)其的破解. 其實(shí)其破解的基本思想如下:
  比如在密文中, 經(jīng)常出現(xiàn)了同一個(gè)子串(比如UPK), 而且每個(gè)字串之間的距離都是3的整數(shù)倍. 那么解密者就很容易推測(cè)出秘匙的長(zhǎng)度為3. 其原因也是十分簡(jiǎn)單的:
  當(dāng)秘匙在重復(fù)了N次之后, 其還是用第一個(gè)字母去加密UPK相應(yīng)的明文. 尤其是對(duì)THE, YOU, WHAT 這類高頻詞匯當(dāng)使用了弱秘匙的話,更容易遭受破解. 關(guān)于維吉
  尼亞密碼的具體破解工作, 不在本文范圍之內(nèi), 有興趣的朋友可以自行研究.
  
  
  以上介紹的是維吉尼亞密碼的加密, 解密的話, 直接找出相應(yīng)行在第一行中對(duì)應(yīng)的字母即可.
  
  
  通過對(duì)維吉尼亞密碼原理的學(xué)習(xí), 我們不難發(fā)現(xiàn)用計(jì)算機(jī)語(yǔ)言寫出維吉尼亞的算法也是很簡(jiǎn)單的一件事情.
  
  加密:
  
  

代碼:
        nMLen = strlen(szM);
        nKLen = strlen(szK);
  
        for (i=0;i<nMLen;i++)
        {
          szL[i] = ((szM[i]-'A') + (szK[i%nKLen]-'A')) % 26 + 'A';                        
        }
  
  
  解密:
  
代碼:
        nLLen = strlen(szL);
        nKLen = strlen(szK);
  
        for (i=0;i<nLLen;i++)
        {
          szM[i] = ((szL[i]-'A') + (szK[i%nKLen]-'A')) % 26 + 'A';
          if (szM[i] < 'A')
          {
            szM[i] += 26;
          }
        }
  
  
  附件中為維吉尼亞密碼學(xué)習(xí)輔助軟件. 希望大家用的上. ::)
  
  
  
  
 
--------------------------------------------------------------------------------
【版權(quán)聲明】: 本文原創(chuàng)于看雪技術(shù)論壇, 轉(zhuǎn)載請(qǐng)注明作者并保持文章的完整, 謝謝!

                                                       2009年05月23日 PM 04:39:14
上傳的附件 Vigenere_src.rar
 Vigenere_bin.rar

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多