| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2516 人关注过本帖
标题:求“维琼内尔密码法”的解密算法及程序,内详:
取消只看楼主 加入收藏
lgwlgwlgw
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2004-11-3
收藏
 问题点数:0 回复次数:1 
求“维琼内尔密码法”的解密算法及程序,内详:

小弟在德国念书,教授出了一道加解密题目,关于“Vigenère-Cipher”问题,即维琼内尔密码法,用C语言编写相关内容。

命题:已知密文为“WGPKYKVRYTHHDXSL”,密钥长短和内容不知,知道明文包含字符“SIND”,选择合适的办法猜解出密钥。用C语言编写该程序。

(小弟问了同学,说可以用穷举法,如a,b,c...aa,ab,ac...aaa,aab,aac...等等一一尝试下去,可小弟c编程快忘光了,一时间也拣不起来了,所以请各位高人帮忙,写个程序,谢谢。)附上2则附录,有需要了解此加密机制和编程辅助的可以参看。

附录1:“维琼内尔密码法”的加密原理。 附录2:“维琼内尔密码法”的加密过程C语言程序,小弟改写的,经编译和验证正确。

****************************************************************

附录1:維瓊內爾密碼法是由多套的單套字母替代式密碼法所組成,讓我們先觀察一下表一:維瓊內爾最上面一行的小寫字母是明文字母,接著下面的是二十六套密碼字母,每套都是將它前套字母向後挪移一位。每個密匙字母都對應著與它同行的一行密文字母(即每一行的第一个字母即是密文字母)。每一行密文字母與最上面一行的明文字母就組成凱撒密碼的一張換字表,一共有26行密文字母,因此有26張換字表,它們分別代表“後移1位”、“後移2位”……“後移26”的凱撒密碼。

例如,現在要用HOUSE為鑰匙字,順序依著H、O、U、S、E去加密明文New Generation,得出的就是經維瓊內爾密碼法加密過的密文(詳參後表)。简而言之就是(明文+密钥)再与26求模=密文了。

鑰匙字 H O U S E H O U S E H O U 明文 n e w g e n e r a t i o n 密碼文 U S Q Y I U S L S X P C H

可以看出,在明文中,同樣是n,可同時被加密成U及H兩個字,而在密文中,同樣是S,卻分別代表著e及a兩個字。這樣,便很大程度上消除了單套字母替代式密碼法面對頻率分析法的威脅,從而變得非常難以攻破,一直維持了三百多年。

它的数学模型是:

ZG = ZK + ZS mod 26 例如: 密钥: C O D E C O D E C O D E C O D E ZS : 2 14 3 4 2 14 3 4 2 14 3 4 2 14 3 4 明文: P O L Y A L P H A B E T I S C H ZK : 15 14 11 24 0 11 15 7 0 1 4 19 8 18 2 7 ZG : 17 2 14 2 2 25 18 11 2 15 7 23 10 6 5 11 密文: R C O C C Z S L C P H X K G F L

此主题相关图片如下:

**************************************************************** 附录2:加密过程的C程序

#include<stdio.h>

main() {

int n=0,i=0,j=0,k=0; char word_s[27]="abcdefghijklmnopqrstuvwxyz", passwd[129],message[257]; char *word=word_s,*p=passwd,*m=message; printf("cleartext : "); scanf("%s",m); printf("Keyword : "); scanf("%s",p); printf("codetext : ");

while(p[n]!='\0') { n=n+1; } while(m[i]!='\0') { while(p[i%n]!=word[j]) { j=j+1; } while(m[i]!=word[k]) { k=k+1; }

printf("%c",word[(j+k)%26]); i=i+1; j=0; k=0;

}

return 0;

}

搜索更多相关主题的帖子: 维琼内尔 算法 密码 内详 
2004-11-04 21:32
lgwlgwlgw
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2004-11-3
收藏
得分:0 
3楼的同学,该密钥和明文为德文,也许你看不懂事正常的。请你将你推导的明文写一下出来。我最想要的事解密过程的程序,如果有就最好了。
2004-11-08 18:36
快速回复:求“维琼内尔密码法”的解密算法及程序,内详:
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018196 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved