认证杯B题Word文档格式.docx

上传人:b****5 文档编号:21712188 上传时间:2023-01-31 格式:DOCX 页数:17 大小:202.09KB
下载 相关 举报
认证杯B题Word文档格式.docx_第1页
第1页 / 共17页
认证杯B题Word文档格式.docx_第2页
第2页 / 共17页
认证杯B题Word文档格式.docx_第3页
第3页 / 共17页
认证杯B题Word文档格式.docx_第4页
第4页 / 共17页
认证杯B题Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

认证杯B题Word文档格式.docx

《认证杯B题Word文档格式.docx》由会员分享,可在线阅读,更多相关《认证杯B题Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

认证杯B题Word文档格式.docx

随机

抽样方法;

样本估计总体;

线性加权法

摘要:

单字母替换加密是一种自古就有的加密方法,本文针对密文破译过程中往往需要人为干预的问题,通过对收集数据的统计分析,在考虑只针对26个英文字母的情况下,利用C程序语言,给出了自动化破译密文的算法,并且对这一算法进行了误差分析来衡量破译能力。

针对问题一,设计能够自动化破译密文的算法,在算法的设计过程中采用频率统计分析的方法对密文中各个字母以及字母搭配情况进行分析,并利用COCA语料库的单词检索功能统计英语语言中各个字母可能出现的搭配情况以及出现频率,再通过对比分析和最大似然估计的方法判断密文中的相应的字母及搭配。

便可根据判断出字母对应关系即可破译出密文。

针对问题二,由于密码破译要考虑到26个字母的正确率、句子与文章的可读性、破译时间的长短,所以从第一步破解出的明文中针对不同长度的单词随机的抽取出其中5%的单词作为样本,判断字母和单词的正确率并与破译时间一起采用线性加权法

来估计总体从而衡量出算法的破译能力。

综上,通过算法可以自动化的破译由单字母替换加密后生成的密文,并且根据对破译能力的衡量可以对算法做出进一步的改进。

参赛密码

(由组委会填写)

参赛队号:

#3156

所选题目:

B

英文摘要(选填)

(此摘要非论文必须部分,选填可加分,加分不超过论文总分的5%)

Monoalphabeticcipherhasbecomeonekindofencryptionmethodssinceancienttime.Themainpurposeofthispaperistosolvetheproblemthatciphertextdecipheringprocessoftenrequireshumanintervention.Throughthestatisticalanalysisonthecollecteddata,takeonlyintoaccount26Englishletters,withtheuseofCprogramminglanguage.Thispaperobtainedanalgorithmtodeciphercipherautocratically.Andbasedontheerroranalysisofthisalgorithm,theattackabilityofitcanbemeasured.

Toproblemone,aimingattheproblemofdesigninganalgorithmtodecipherciphertextautomatically,inthealgorithmdesigningprocessthispaperusedthemethodofstatisticalanalysisofthefrequencyofeachletterandthecollocationoftheselettersintheciphertext,alsousedtheCOCAcorpusretrievalthefrequencyofwordswiththeselettersintheEnglishlanguage,andwiththemethodsofcomparativeanalysisandmaximumlikelihoodestimationofthejudgmentthispaperobtainedanreasonablesecretkey.Thenaccordingtothejudgmentoftheletters’correspondingrelationshiptogetadecipherciphertext.

Toquestiontwo,measuringtheabilityofthealgorithmtodecipherthestandarddesignproblemconsideredinthefirststep,breakouttheplaintextfordifferentlengthofwordsatrandomoutofwhich5%words,theartificialinspectionaccuracyofthesewords,accordingtotherandomwordslikethedegreeofaccuracyoftheestimationaccuracyoftheoverall,theabilitytodecipherinordertomeasurealgorithm.

Insummary,thealgorithmcanautomaticdecipheredbysinglelettersubstitutionciphertext,andaccordingtothemeasureofthedecodingabilitycanmakefurtherimprovementonthealgorithm.

一:

问题重述

1.1引言

密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。

它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。

它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。

密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。

依照这些法则,变明文为密文,称为加密变换;

变密文为明文,称为脱密变换。

当今世界各主要国家的政府都十分重视密码工作,有的设立庞大机构,拨出巨额经费,集中数以万计的专家和科技人员,投入大量高速的电子计算机和其他先进设备进行工作。

与此同时,各民间企业和学术界也对密码日益重视,不少数学家、计算机学家和其他有关学科的专家也投身于密码学的研究行列,更加速了密码学的发展。

1.1密码系统模型

1.2问题背景

历史上有许多密码的编制方法。

较为简单的是替换式密码,也就是将文中出现的字符一对一地替换成其它的符号。

对拼音文字而言,最简单的形式是单字母替换加密,也就是以每个字母为一个单位,将每个字母替换成另外的字母或者另外的符号。

较为复杂的形式是以多个字母为一个单元,整体替换成其它的字符。

这个映射方法被称为密码表,拿到密码表的人就能够将密文破译成明文。

单字母替换加密是在古代就使用过的一种加密方法,但由于其容易被破解,所以在现代需要加密的场合已经很少使用。

单字母替换加密的破译方法有频率分析等。

这种密码和破译方法在小说中也经常提到,例如爱伦·

坡的《金甲虫》和柯南·

道尔在福尔摩斯系列故事《归来记》中的“跳舞小人”。

但当获取的密文篇幅不是很大时,光凭借频率分析是不足以破译全部密文的。

往往还要熟知该种语言的人,经过对可能出现的词汇及字母组合进行分析,才能完整地破译密码。

1.3问题提出

问题一:

假设明文是由现代通常使用的英语写成的。

现在我们获取了一些由单字母加密方法加密的密文。

请你建立合理的数学模型,设计一个算法,来自动化地破译密文。

为了问题简单起见,我们假设密码表仅是针对26个字母的,每个单词之间的空格,以及标点符号仍然会保留。

问题二:

设计一个衡量破译能力的标准,来评价破译算法的破译能力。

在设计算法时,如果需要,可以参考英文语料库的数据,例如免费的COCA1等相关资料。

二:

问题分析

2.1问题的总体分析

单字母替换加密方法就是先随机地将字母两两配对,形成固定的密码表,然后将原始信息中的每一个字母用它的配对者来代替。

密码的一个字母只代表明码的一个字母,但是各密码字母与字母表的顺序无关,而是随机的。

比如A如果与m配对,那么B不一定是与n配对。

2.2问题一的分析

问题一需要我们建立合理的数学模型和设计合理的算法,来自动化的破译密文,根据对英文语言的研究与统计,语言的统计特性可以反应字母的出现概率,于是便得到语言字母表的一个概率分布。

在字母出现频率与字母组合特性的基础上,我们设计了一个算法来对密文(由单字母替换加密的方法加密而成)进行自动化的破译。

2.3问题二的分析

问题二是一个衡量问题,对我们设计的算法进行验证并衡量破译能力的标准,来评价算法的破译能力,从而得出单字母替换加密的密码表。

三:

模型假设

1.假设密码表仅针对26个英文字母。

2.假设每个单词之间的空格以及标点符号仍然会保留。

3.假设密文全是用大写英文字母组成的。

4.假设加密英文的加密方式唯一。

5.假设文章包含全部26个英文字母。

四:

名词解释与符号说明

密钥:

分为加密密钥和解密密钥。

明文:

没有进行加密,能够直接代表原文含义的信息。

密文:

经过加密处理处理之后,隐藏原文含义的信息。

加密:

将明文转换成密文的实施过程。

解密:

将密文转换成明文的实施过程。

密码算法:

密码系统采用的加密方法和解密方法。

加密算法:

加密时使用的方法。

解密算法:

解密时使用的方法。

加密(encryption)算法:

将普通信息(明文,plaintext)转换成难以理解的资料(密文,ciphertxet)的过程。

解密(decryption)算法则是其相反的过程:

由密文转换回明文。

替代(substitutioncipher):

有系统地将一组字母换成其他字母或符号。

f(x):

算法破译的线性加权函数

h(x):

衡量算法破译能力的定义函数。

α、β、γ:

常数参数。

t:

运行时间

英文单字母错误率

英文单词错误率

五:

模型的建立和解决

5.1问题一

5.1.1模型的建立

为了实现自动化地破译密文,我们借助c语言,并且参考英文语料库的数据,例如免费的COCA1等相关资料,从单个字母、双字母单词等频率入手,并辅以各种英语习惯性用法,来编写c语言程序。

在问题中,我们假设密码表仅是针对26个字母的,每个单词之间的空格,以及标点符号仍然会保留,并且在密文中包含全部的26个字母。

在程序中我们先统计出各词的词频,其中频率最高的为e,频率最低的为z,再统计末尾为e的三字母单词,其中频率最高的定为the,之后从i,a突破,统计出现单个字母的频率,其中多的定为a,另一个为i。

以上我们确定了a、e、i、h、t五个基础字母(外加一个低频字母z),并以此为基础破译其他字母。

寻找到以a开头的三字母单词,以are确定r,and确定n、d,接着以is或者反向双字母组合es—se,确定s,再以词尾为ing的单词确定g。

接下来,以2个相邻的元音字母io、ou确定o、u,然后如果单词的头两个字母都是辅音,则第二个字母最可能是:

r、l和h,而r、h已经确定,所以可以定为l,同理如果一个词以三个辅音结尾,那最常见的是-ght和-tch,这里只有c未知,所以可以确定c,接着以三字母ver确定v,for或of确定f,with或will确定w。

以上有可能有部分条件不能达到无法确定一些字母,则以一些高频单词去尝试破译。

最后一些稀频字母用高频单词确定:

G:

getgogoingrightthroughgoodgot

K:

likeknowthinkbackwork

P:

uppeoplepresident

Q:

questionquestionsquite

X:

nextexamplesixesperence

Y:

youtheybymyyour

B:

butbetweenabout

M:

fromcomebecome

J:

jobjoinjump

5.1.2模型的求解

(1)由coca^([1])和前人总结(由独立试验产生明文单码,Beker在1982年统计的样本总数为100362,得到单码的概率分布表)得英文中单字母出现频率:

英文单字母概率表^([2])

所以可以得到单字母频率:

--------------------------

极高频|E

次高频|TAOINSHR

中等频|DL

低频|CUMWFGYPB

甚低频|VKJXQZ

--------------------------

由上可自e的概率最大,而z的概率最小,所以我们先统计出个单词的频率,在有此先确定e和z。

(2)由于第一步已经确定e,所以统计所有的以e结尾的三字母单词,由coca知频率最大的为the,所以可以确定t、h。

三字母组频率:

|THE|ING|AND|HER|ERE|ENT|THA|

|NTH|WAS|ETH|FOR|DTH|HAT|SHE|

|ION|HIS|STH|ERS|VER|

the频率几乎是ing的3倍

(3)由于单个字母为一个单词的只有a、i,而a的频率比i的频率大得多,所以统计单个字母单词,多的为a。

(4)从文中寻找由a开头的三字母单词,而英文中的这类单词基本为are和and,又由e已知,所以可以确定为r,而剩下的为and,从而确定n、d两字母。

(5)接着由于i和e已知,所以由is或者反向双字母组合es—se,确定s

(6)应以ing为结尾的词频率极高,又由于i、n确定,所以统计单词结尾的三个字母并且前两个为in,最多的可以基本确定g。

(7)由coca与英语知识知,io、ou和ea是最常见的双元音字母组。

(8)然后如果单词的头两个字母都是辅音,则第二个字母最可能是:

r、l和h,而r、h已经确定,所以可以定为l。

(9)如果一个词以三个辅音结尾,那最常见的是-ght和-tch,这里只有c未知,所以可以确定c,而三字母ver的频率由三字母组概率可知比较高,所以可以确定v。

(10)而由二字母和三字母组频率可知of、for出现频率极高,所以可确定f。

(11)因为英文单词中以t、a、s、w为起始字母的约占一半,由于t、a、s已知,所以可以由with、will高概率单词确定w。

(12)由于以上确定字母的条件不一定满足,所以当不满足时,转入以高频单词为突破口,从而确定字母。

(13)最后一些稀频字母用高频单词确定:

getgogoingrightthroughgoodgot

likeknowthinkbackwork

uppeoplepresident

questionquestionsquite

nextexamplesixexperience

youtheybymyyour

butbetweenabout

fromcomebecome

jobjoinjump

5.2问题二

5.2.1模型建立

破译能力的标准:

由于密码破译要考虑到26个字母的正确率和句子与文章的可读性,并且还有在一定的时间内破译出来,所以还要考虑时间的长短。

因此采用线性加权法来设计一个衡量破译能力的标准,以此来评价破译算法的破译能力。

破译能力公式定义为:

α,β,γ由破译时的具体需要人为给定不同的加权比重。

将参数带入公式f(x)=α∙

+β∙

+γt得出f(x)。

并且定义:

h(x)=1-f(x)(4)

为衡量该算法破译能力的函数。

5.2.2模型的求解

由程序得26个字母的破译结果,检查其正确与否,从而确定

另外在第一步破解出的明文中针对不同长度的单词随机的抽取出其中5%的单词,人工检验这些单词的准确程度,根据这些随机抽出的单词样本的准确程度来确定

而t为程序运行时间。

对于α,β,γ的确定由破译的要求人为确定,若重点考虑破译的完全度可以让α远大于β,γ;

若重点考虑单词的准确率或文章的可读性可以让β远大于α,γ;

若是需要在短时间内破译密码可以让γ远大于α,β。

如果是无限资源和时间,那么γ可以取0。

最后带入参数运用公式f(x)=α∙

+γ∙t得出f(x),算出h(x)=1-f(x)的值即为该算法破译能力的量化值。

六:

模型评价及改进

6.1评价

本模型运用了单字母替换加密的破译方法的主要方法:

频率分析,并且由coca查阅和前人总结得出了文单字母频率、二字母组频率、三字母组频率和一些英语单词存在的统计特性,编译出了可靠的破译程序,并且一定程度上克服了当获取的密文篇幅不是很大时,光凭借频率分析是不足以破译全部密文的缺陷。

但由于确定的a、e、i、h、t五个基础字母的确定带有一定的主观性,所以存在一定的风险性,而后面的字母确定有一定不成立的可能性,要用高频单词进行破解,会大大增加运行时间。

由于程序要不停的反复确定一些单字母、双字母、三字母的频率,所以运行时间较长。

而破译过程有多种假设,会使方法有一定的局限性。

6.2改进

在破译过程中,可以调整一定的顺序,增加方法的可靠性,而代码方面,尽量减少重复且不必要的操作,以减少运行时间。

七:

参考文献

[1]COCA语料库,http:

//corpus.byu.edu/full-text/formats.asp,2015.4.(17-19)

[2]蔡乐才,《高等学校教育改革推荐教材应用密码学》,北京:

中国电力出版社,2005,17-18.

附录:

#include<

stdio.h>

#include<

stdlib.h>

#defineM1000

voidtihuan();

intmain()

{

switch(getchar())

{

case'

1'

:

exit(0);

break;

2'

tihuan();

3'

erjinzhi();

}

return0;

}

voidtihuan()

FILE*infile=NULL;

FILE*outfile=NULL;

intkey;

intoperation=0;

charfilename[100],tempfile[1000],data;

while

(1)

{

infile=outfile=NULL;

operation=0;

while(!

(operation==1||operation==2))

{

printf("

0【请输入2】:

"

);

scanf("

%d"

&

operation);

if(!

printf("

有误,请重新选择!

\n"

}

while(infile==NULL)

\n输入要打开的文件文件名称(完整路径):

%s"

filename);

infile=fopen(filename,"

r"

if(infile==NULL)

\n无法打开文件,请检查文件是否存在后重新输入!

printf("

\随机输入"

scanf("

key);

if(operation==1)

\n"

else

\n输入保存解密后文件的名称(完整路径):

outfile=fopen(filename,"

w+"

while((data=fgetc(infile))!

=EOF)

if(operation==1)

fputc(data+key,outfile);

else

fputc(data-key,outfile);

if(operation==1)

\ndecryption:

rewind(infile);

while((data=fgetc(infile))!

=EOF)

%c"

data);

-->

"

rewind(outfile);

while((data=fgetc(outfile))!

\n\n"

fclose(infile);

fclose(outfile);

break;

printf("

interjinzhi()

charfilename[100],tempfile[10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1