请问古代密码学的发展过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问古代密码学的发展过程相关的知识,希望对你有一定的参考价值。

古代密码学的起源,它的发展是怎么样的。

密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。

密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。

密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。它的现实研究成果,特别是各国政府现用的密码编制及破译手段都具有高度的机密性。

进行明密变换的法则,称为密码的体制。指示这种变换的参数,称为密钥。它们是密码编制的重要组成部分。密码体制的基本类型可以分为四种:错乱——按照规定的图形和线路,改变明文字母或数码等的位置成为密文;代替——用一个或多个代替表将明文字母或数码等代替为密文;密本——用预先编定的字母或数字密码组,代替一定的词组单词等变明文为密文;加乱——用有限元素组成的一串序列作为乱数,按规定的算法,同明文序列相结合变成密文。以上四种密码体制,既可单独使用,也可混合使用 ,以编制出各种复杂度很高的实用密码。

20世纪70年代以来,一些学者提出了公开密钥体制,即运用单向函数的数学原理,以实现加、脱密密钥的分离。加密密钥是公开的,脱密密钥是保密的。这种新的密码体制,引起了密码学界的广泛注意和探讨。

利用文字和密码的规律,在一定条件下,采取各种技术手段,通过对截取密文的分析,以求得明文,还原密码编制,即破译密码。破译不同强度的密码,对条件的要求也不相同,甚至很不相同。

中国古代秘密通信的手段,已有一些近于密码的雏形。宋曾公亮、丁度等编撰《武经总要》“字验”记载,北宋前期,在作战中曾用一首五言律诗的40个汉字,分别代表40种情况或要求,这种方式已具有了密本体制的特点。

1871年,由上海大北水线电报公司选用6899个汉字,代以四码数字,成为中国最初的商用明码本,同时也设计了由明码本改编为密本及进行加乱的方法。在此基础上,逐步发展为各种比较复杂的密码。

在欧洲,公元前405年,斯巴达的将领来山得使用了原始的错乱密码;公元前一世纪,古罗马皇帝凯撒曾使用有序的单表代替密码;之后逐步发展为密本、多表代替及加乱等各种密码体制。

二十世纪初,产生了最初的可以实用的机械式和电动式密码机,同时出现了商业密码机公司和市场。60年代后,电子密码机得到较快的发展和广泛的应用,使密码的发展进入了一个新的阶段。

密码破译是随着密码的使用而逐步产生和发展的。1412年,波斯人卡勒卡尚迪所编的百科全书中载有破译简单代替密码的方法。到16世纪末期,欧洲一些国家设有专职的破译人员,以破译截获的密信。密码破译技术有了相当的发展。1863年普鲁士人卡西斯基所著《密码和破译技术》,以及1883年法国人克尔克霍夫所著《军事密码学》等著作,都对密码学的理论和方法做过一些论述和探讨。1949年美国人香农发表了《秘密体制的通信理论》一文,应用信息论的原理分析了密码学中的一些基本问题。

自19世纪以来,由于电报特别是无线电报的广泛使用,为密码通信和第三者的截收都提供了极为有利的条件。通信保密和侦收破译形成了一条斗争十分激烈的隐蔽战线。

1917年,英国破译了德国外长齐默尔曼的电报,促成了美国对德宣战。1942年,美国从破译日本海军密报中,获悉日军对中途岛地区的作战意图和兵力部署,从而能以劣势兵力击破日本海军的主力,扭转了太平洋地区的战局。在保卫英伦三岛和其他许多著名的历史事件中,密码破译的成功都起到了极其重要的作用,这些事例也从反面说明了密码保密的重要地位和意义。

当今世界各主要国家的政府都十分重视密码工作,有的设立庞大机构,拨出巨额经费,集中数以万计的专家和科技人员,投入大量高速的电子计算机和其他先进设备进行工作。与此同时,各民间企业和学术界也对密码日益重视,不少数学家、计算机学家和其他有关学科的专家也投身于密码学的研究行列,更加速了密码学的发展。

现在密码已经成为单独的学科,从传统意义上来说,密码学是研究如何把信息转换成一种隐蔽的方式并阻止其他人得到它。
密码学是一门跨学科科目,从很多领域衍生而来:它可以被看做是信息理论,却使用了大量的数学领域的工具,众所周知的如数论和有限数学。
原始的信息,也就是需要被密码保护的信息,被称为明文。加密是把原始信息转换成不可读形式,也就是密码的过程。解密是加密的逆过程,从加密过的信息中得到原始信息。cipher是加密和解密时使用的算法。
最早的隐写术只需纸笔,现在称为经典密码学。其两大类别为置换加密法,将字母的顺序重新排列;替换加密法,将一组字母换成其他字母或符号。经典加密法的资讯易受统计的攻破,资料越多,破解就更容易,使用分析频率就是好办法。经典密码学现在仍未消失,经常出现在智力游戏之中。在二十世纪早期,包括转轮机在内的一些机械设备被发明出来用于加密,其中最著名的是用于第二次世界大战的密码机Enigma。这些机器产生的密码相当大地增加了密码分析的难度。比如针对Enigma各种各样的攻击,在付出了相当大的努力后才得以成功。
参考技术A 凯撒大帝发明的算是第一个成熟的密码吧 参考技术B http://hi.baidu.com/%D1%A4%C0%F6%CF%A6%D1%F4/blog/item/0def74237205fc539922ed5b.html

参考资料:http://hi.baidu.com/%D1%A4%C0%F6%CF%A6%D1%F4/blog/item/0def74237205fc539922ed5b.html

参考技术C 密码的使用可以追朔到古埃及时期,在那时有一种现在被称为“棋盘密码”的加密方法。其原理如下:
在通信双方,掌握着相同的m*n列矩阵,在该矩阵中保存着所要加密的字符组成的字符集,加密时找到相应的明文字符,然后记下行号与列号。不断重复上述过程,直到查完所有明文字符,这样就可以得到以行号与列号组成的一个数字序列c。
接受方接受到该数字序列c,不断从该序列中取出行号与列号,然后在m*n列矩阵中查找出对应行、列的字符。显然,由于双方拥有相同的矩阵,故能够保证接受者可以从密文中还原出明文。在这种加密方法中,密钥显然就是那个矩阵。对于这种加密方法,相必有许多读者已从一些小说中见到。
在计算机上又如何实现这种密码呢?我相信不用说,大家都已想到该怎么做了。对,实质上就是重新映射计算机上的字符集。而那个映射表就是密钥。
说到底,其实这种加密方法就是一个单表置换加密(在以后会讨论到这种加密方法的)。对于单表置换加密可通过频率统计方法进行破译,因此,这是一种不安全的加密方法。

密码学作为保护信息的手段,经历了三个发展时期。它最早应用在军事和外交领域,随着科技的发展而逐渐进入人们的生活中。

在手工阶段,人们只需通过纸和笔对字符进行加密。密码学的历史源远流长,人类对密码的使用可以追溯到古巴比伦时代。下图的Phaistos圆盘是一种直径约为160mm的粘土圆盘,它始于公元前17世纪,表面有明显字间空格的字母。近年有研究学家认为它记录着某种古代天文历法,但真相仍是个迷。

随着工业革命的兴起,密码学也进入了机器时代、电子时代。与人手操作相比电子密码机使用了更优秀复杂的加密手段,同时也拥有更高的加密解密效率。其中最具有代表性的就是下图所示的ENIGMA。

ENIGMA是德国在1919年发明的一种加密电子器,它被证明是有史以来最可靠的加密系统之一。二战期间它开始被德军大量用于铁路、企业当中,令德军保密通讯技术处于领先地位。在这个时期虽然加密设备有了很大的进步,但是密码学的理论却没有多大的改变,加密的主要手段仍是--替代和换位。

计算机的出现使密码进行高度复杂的运算成为可能。直到1976年,为了适应计算机网络通信和商业保密要求产生的公开密钥密码理论,密码学才在真正意义上取得了重大突破,进入近代密码学阶段。近代密码学改变了古典密码学单一的加密手法,融入了大量的数论、几何、代数等丰富知识,使密码学得到更蓬勃的发展。

到了现在,世界各国仍然对密码的研究高度重视,已经发展到了现代密码学时期。密码学已经成为结合物理、量子力学、电子学、语言学等多个专业的综合科学,出现了如“量子密码”、“混沌密码”等先进理论,在信息安全中起着十分重要的角色。

希腊斯巴达出现原始的密码器,用一条带子缠绕在一根木棍上,沿木棍纵轴方向写好明文,解下来的带子上就只有杂乱无章的密文字母。解密者只需找到相同直径的木棍,再把带子缠上去,沿木棍纵轴方向即可读出有意义的明文。这是最早的换位密码术。 公元前1世纪,著名的恺撒(Caesar)密码被用于高卢战争中,这是一种简单易行的单字母替代密码。公元9世纪,阿拉伯的密码学家阿尔·金迪(al' Kindi 也被称为伊沙克 Ishaq,(801?~873年),同时还是天文学家、哲学家、化学家和音乐理论家)提出解密的频度分析方法,通过分析计算密文字符出现的频率破译密码。公元16世纪中期,意大利的数学家卡尔达诺(G.Cardano,1501—1576)发明了卡尔达诺漏格板,覆盖在密文上,可从漏格中读出明文,这是较早的一种分置式密码。 公元16世纪晚期,英国的菲利普斯(Philips)利用频度分析法成功破解苏格兰女王玛丽的密码信,信中策划暗杀英国女王伊丽莎白,这次解密将玛丽送上了断头台。 几乎在同一时期,法国外交官维热纳尔(或译为维琼内尔) Blaise de Vigenere(1523-1596)提出著名的维热纳尔方阵密表和维热纳尔密码(Vigenerecypher),这是一种多表加密的替代密码,可使阿尔—金迪和菲利普斯的频度分析法失效。 公元1863,普鲁士少校卡西斯基(Kasiski)首次从关键词的长度着手将它破解。英国的巴贝奇(Charles Babbage)通过仔细分析编码字母的结构也将维热纳尔密码破解。公元20世纪初,第一次世界大战进行到关键时刻,英国破译密码的专门机构“40号房间”利用缴获的德国密码本破译了著名的“齐默尔曼电报”,促使美国放弃中立参战,改变了战争进程。 大战快结束时,准确地说是1918年,美国数学家吉尔伯特·维那姆发明一次性便笺密码,它是一种理论上绝对无法破译的加密系统,被誉为密码编码学的圣杯。但产生和分发大量随机密钥的困难使它的实际应用受到很大限制,从另一方面来说安全性也更加无法保证。 第二次世界大战中,在破译德国著名的“恩格玛(Enigma)”密码机密码过程中,原本是以语言学家和人文学者为主的解码团队中加入了数学家和科学家。电脑之父亚伦·图灵(Alan Mathison Turing)就是在这个时候加入了解码队伍,发明了一套更高明的解码方法。同时,这支优秀的队伍设计了人类的第一部电脑来协助破解工作。显然,越来越普及的计算机也是军工转民用产品。美国人破译了被称为“紫密”的日本“九七式”密码机密码。靠前者,德国的许多重大军事行动对盟军都不成为秘密;靠后者,美军炸死了偷袭珍珠港的元凶日本舰队总司令山本五十六。同样在二次世界大战中,印第安纳瓦霍土著语言被美军用作密码,从吴宇森导演的《风语者》Windtalkers中能窥其一二。所谓风语者,是指美国二战时候特别征摹使用的印第安纳瓦约(Navajo)通信兵。在二次世界大战日美的太平洋战场上,美国海军军部让北墨西哥和亚历桑那印第安纳瓦约族人使用约瓦纳语进行情报传递。纳瓦约语的语法、音调及词汇都极为独特,不为世人所知道,当时纳瓦约族以外的美国人中,能听懂这种语言的也就一二十人。这是密码学和语言学的成功结合,纳瓦霍语密码成为历史上从未被破译的密码。 1975年1月15日,对计算机系统和网络进行加密的DES(Data Encryption Standard数据加密标准)由美国国家标准局颁布为国家标准,这是密码术历史上一个具有里程碑意义的事件。 1976年,当时在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人提出了公开密钥密码的新思想(论文"New Direction in Cryptography"),把密钥分为加密的公钥和解密的私钥,这是密码学的一场革命。 1977年,美国的里维斯特(Ronald Rivest)、沙米尔(Adi Shamir)和阿德勒曼(Len Adleman)提出第一个较完善的公钥密码体制——RSA体制,这是一种建立在大数因子分解基础上的算法。 1985年,英国牛津大学物理学家戴维·多伊奇(David Deutsch)提出量子计算机的初步设想,这种计算机一旦造出来,可在30秒钟内完成传统计算机要花上100亿年才能完成的大数因子分解,从而破解RSA运用这个大数产生公钥来加密的信息。 同一年,美国的贝内特(Bennet)根据他关于量子密码术的协议,在实验室第一次实现了量子密码加密信息的通信。尽管通信距离只有30厘米,但它证明了量子密码术的实用性。

参考资料:http://www.blogger.com/feeds/1743610267291519698/posts/default/3493556910897405086

本回答被提问者采纳

bzoj1406: [AHOI2007]密码箱

1406: [AHOI2007]密码箱

Time Limit: 5 Sec  Memory Limit: 64 MB

Description

在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子背面刻着的古代图标,就是对密码的提示。经过艰苦的破译,小可可发现,这些图标表示一个数以及这个数与密码的关系。假设这个数是n,密码为x,那么可以得到如下表述: 密码x大于等于0,且小于n,而x的平方除以n,得到的余数为1。 小可可知道满足上述条件的x可能不止一个,所以一定要把所有满足条件的x计算出来,密码肯定就在其中。计算的过程是很艰苦的,你能否编写一个程序来帮助小可可呢?(题中x,n均为正整数)

Input

输入文件只有一行,且只有一个数字n(1<=n<=2,000,000,000)。

Output

你的程序需要找到所有满足前面所描述条件的x,如果不存在这样的x,你的程序只需输出一行“None”(引号不输出),否则请按照从小到大的顺序输出这些x,每行一个数。

Sample Input

12

Sample Output

1
5
7
11

HINT

 

Source

 

Tip:

  原式化为(x+1)(x-1)=kn;

  将n分解因数,取>√n的因数枚举就可以了;

 

Code:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<map>
using namespace std;

int n,m,ans[1000008],a[100008],tot;
map<int,bool>mp;

int main(){
    scanf("%d",&n);
    ans[++ans[0]]=1;
    for(int i=1;i*i<=n;i++)
        if(n%i==0) a[++a[0]]=n/i;
    for(int i=1;i<=a[0];i++)
        for(int j=a[i];j<=n;j+=a[i]){
            if((j+2)<n && (j+2)%(n/a[i])==0 && !mp[j+1]){
                mp[j+1]=1;
                ans[++ans[0]]=j+1;
            }
            if((j-2)>0 && (j-2)%(n/a[i])==0 && !mp[j-1]){
                mp[j-1]=1;
                ans[++ans[0]]=j-1;
            }
        }
    sort(ans+1,ans+ans[0]+1);
    for(int i=1;i<=ans[0];i++)
        printf("%d\n",ans[i]);
}

 

以上是关于请问古代密码学的发展过程的主要内容,如果未能解决你的问题,请参考以下文章

1.1 密码学发展历史

加密的历史

人人都能读懂的非对称加密

10:古代密码

古典密码简介

4.5星|《中央帝国的财政密码》:货币战争两千年,中国古代王朝兴衰更迭的财政原因