古典加密算法分为替代算法和置换移位法。
1、替代算法
替代算法用明文的字母由其他字母或数字或符号所代替。最著名的替代算法是恺撒密码。凯撒密码的原理很简单,其实就是单字母替换。
例子:
明文:abcdefghijklmnopq
密文:defghijklmnopqrst
2、置换移位法
使用置换移位法的最著名的一种密码称为维吉尼亚密码。它以置换移位为基础的周期替换密码。
在维吉尼亚密码中,加密密钥是一个可被任意指定的字符串。加密密钥字符依次逐个作用于明文信息字符。明文信息长度往往会大于密钥字符串长度,而明文的每一个字符都需要有一个对应的密钥字符,因此密钥就需要不断循环,直至明文每一个字符都对应一个密钥字符。
其他常见的加密算法
1、DES算法是密码体制中的对称密码体制,把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。
2、3DES是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高。
3、RC2和RC4是对称算法,用变长密钥对大量数据进行加密,比DES快。
4、IDEA算法是在DES算法的基础上发展出来的,是作为迭代的分组密码实现的,使用128位的密钥和8个循环。
5、RSA是由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法。
6、DSA,即数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法。
7、AES是高级加密标准对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael算法。
密码主要用于军事,无论古今中外,概莫能外。据《六韬》所载,3000年前由姜子牙发明了“阴符”,这就是最初的密码。后被广泛运用于我国古代维护国家安全的军事活动和情报活动中。
相传姜太公带领的周军指挥大营被叛兵包围,情况危急。姜太公令信使突围,他怕信使遗忘机密,又怕周文王不认识信使,耽误军务大事。于是就将自己珍爱的鱼竿折成数节,每节长短不一,各代表一件军机,令信使牢记,不得外传。
信使回到朝中,文王令左右将几节鱼竿合在一起,亲自检验。他辨认出是姜太公的心爱之物,便亲率大军解了姜太公之危。事后,姜太公妙思如泉涌,他将鱼竿传信的办法加以改进,便发明了“阴符”。后来又演化成皇帝和大将各执一半的“虎符”,作为调兵遣将的凭证。
宋朝时,官方便将常用的40个军事短语,分别用40个字来代替,然后编出一首40个字的诗,作为破译的“密码本”。到了明朝,戚继光发明了反切码,他还专门编了两首诗歌,作为“密码本”。这两首诗歌是反切码全部秘密所在,它使用汉字注音方法中的“反切法”,取声母和韵母按照顺序进行编号,再进行读取。其原理与现代密电码的设计原理完全一样,但却比现代密码更难破译。
那么西方的情况又是如何呢?
在古希腊,人们用一条带子缠绕在一根木棍上,沿木棍纵轴方向写好明文,解下来的带子上就只有杂乱无章的密文字母。解密者只需找到相同直径的木棍,再把带子缠上去,沿木棍纵轴方向即可读出有意义的明文。
公元前1世纪,凯撒密码被用于高卢战争中,这是一种简单易行的单字母替代密码。战前凯撒设计了一种对重要的军事信息进行加密的方法,即使这些信息被截获,敌方也不一定能看懂。其实,凯撒密码字母移位的位数就是一种简单易行的单字母替代密码。密码轮是利用凯撒密码来应用的,通过把字母移动一定的位数来实现加密和解密。
计算机因解码而诞生
工业革命后,密码学也进入了机器时代、电子时代。上世纪20年代,人们发明了各种机械设备来自动进行加解密,于是就出现了密码机。因为大多数密码机使用连线接通各个机械转轮,实现密码代换,所以也称之为“转轮机时代”。
世界上最著名的密码机是德国在第一次世界大战时发明的“谜”。
“谜”是世界上第一部机械密码机,其工作原理奠定了当今计算机加密的基础。这种密码融数学、物理、语言、历史、国际象棋原理、纵横填字游戏等为一体,被希特勒称为“神都没办法破译的世界第一密码”。一份德国报告称:“谜”能产生220亿种不同的密钥组合,假如一个人日夜不停地工作,每分钟测试一种密钥的话,需要约4.2万年才能将所有的密钥可能组合试完。
二战期间,“谜”被德军大量用于铁路、企业当中,令德军保密通讯技术处于领先地位。
盟军在破译“谜”密码过程中,吸纳了大批语言学家、人文学家、数学家、科学家加入解码队伍。电脑之父图灵, 1912~1954)也在其列。在图灵的领导下,这支优秀的队伍设计了人类的第一部电脑来协助破解工作。1939年8月,解码队伍完成了一部针对“谜”型机的密码破译机,每秒钟可处理2000个字符,绰号叫“炸弹”。半年后,它几乎可以破译所有被截获的德国情报,这使得德国的许多重大军事行动对盟军都不成为秘密。
虽然计算机因破译密码而诞生,而计算机的发展速度远远超过人类的想象。上世纪70年代,三位科学家和电脑专家设计了一个世界上最难破解的密码锁,意图利用长长的数学密码,保护储存在电脑数据库里的绝密资料,例如可口可乐配方、核武器方程式等。他们宣称,人类要想解开他们的密码,需要4万亿年。
当然,编制密码锁的三位专家没有想到,科学会发展得这样快。仅仅过了17年,世界五大洲600位专家利用1600部电脑,并且借助电脑网络,埋头苦干8个月,终于攻克了这个号称千亿年难破的超级密码锁。结果发现,藏在密码锁下的,并非可口可乐配方、核武器方程式,而是这样一句话:“魔咒是神经质的秃鹰。”
密码的民用不到30年
你恐怕没有想到,这样一个密码算法竟让发明者接受了长达5年的审判。因为,那时的密码还由军方垄断。1991年,美国学者齐默尔曼设计出一种经济而有效的产品。当时,美国法律规定,密码算法属于军火,但齐默尔曼还是铤而走险免费发放了这些加密软件。齐默尔曼被美国海关当局起诉的罪名是:“非法出口军火,给敌对国家和恐怖分子提供进攻美国的工具。”
当时,执政者认为,密码算法的广泛应用给恐怖分子、贩毒集团以可乘之机。而支持加密公众化的公民和密码学家认为,人们亟须使用密码来保护个人隐私。
随着电子商务的发展,大的商业公司也加入进来,他们需要强大的密码算法使他们能在网络时代保证业务的安全。经过5年的斗争,克林顿政府被迫更改了法律,大陪审团也放弃了对齐默尔曼定罪的想法。
随着网络时代的到来,密码成了现代都市生活中最普遍运用的个人信息认证手段,它以最简单的数字组合方式,取代各种烦琐的个人认证方法。
1993年,银行业务实行电脑联网。其中,与个人关系最紧密的是活期存款,银行从那时开始让储户设置个人密码。为了方便记忆,身份证的后几位数、生日、电话号码、门牌号等,是那时候老百姓最常用的密码。1996年,全国银行系统普及了密码的使用和设备更新。1999年开始,银行存取款必须使用密码就变成了硬性规定。现在,多数银行只要输入密码,凭存折或储蓄卡,就能进行5万元以下的支取,无需身份证。
2000年前后,国内各大网站开始大规模开发电子邮箱,那时候网站对邮箱密码的要求并不太严格,规定只要三个字符以上即可,有许多人就用ABC、123等做密码。在收到了用户邮箱被盗的反馈后,网站将密码最少数位提升至6位。现在这些以数字和字母搭配的“软密码”也越来越不安全了。例如,前不久国内就有某大型网站被黑客侵入,泄露客户的大量隐私。
目前大多银行等涉及高隐私的部门都开发出针对自己安全系统的“硬密码”,即非要在客户端插上一个类似于U盘那样的“密码”,然后再输入相应的软密码才能登录相应的网站。
经过数千年的演化,我们又回到了“虎符”的年代,只不过现在的虎符是电子的了。
一、 恺撒密码
1.简单介绍
凯撒密码是古时候欧洲常用的一种加密方式:英文一共26个字母,它的加密方式是将这26个字母分别平移固定的位数,
假设位数=3,那么A=D,B=E,如下图:
如果想加密一个单词HELLO,根据上面的唯一对比,加密后的结果应该是LHOOR。颠倒字母后的顺序,使得常人无法读懂这些语句或者单词。如何解密呢,也很简单,只需要将收到的单词向前平移3个位置,就可以恢复到加密前的单词HELLO了。
2.破解
破解凯撒密码的方法很多,有一种暴力破解的方式,就是“遍历”。根据凯撒密码的加密方式,平移固定的位数,26个英文字母总共可以平移的方式是26种,假如位数n=26,其实相当于没有平移,A=A,循环了一次。
进行暴力破解:
n=1:LHOOR=KGNNQ
n=2:LHOOR=JFMMP
n=3:LHOOR=HELLO
这样就破解了,可以推算发位数n=3,其实就是秘钥=3,
最多尝试25次即可推算出加密的n值等于多少(当然这里只是讨论原理,不排除真实情况,可能凑巧某一个错误的n值解密出来的也是一个完整的单词或一段话的情况)。
二、 替换密码
1.简单介绍
替换密码和恺撒密码原理有些类似,个人感觉相当于恺撒密码的变种,替换密码增加了字母替换的随机性.
举个简单的例子,A=G,B=X,C=K
这里ABC..等26个字母都随机指向了“密码”本上的另一个随机的字母,这下就比较难反向推算出“秘钥”是多少了,数量级完全不一样。
简单的算一下可能存在的情况:
A=有25种表示方式BCD…
B=有除A以外24种方式表示CDE..
…
那么秘钥的存在情况是:
N=25!种方式,远远大于恺撒密码的26。
2.破解
面对25!数量级的加密方式,使用暴力破解的方式不再实用了,但是可以使用另一种方法,统计学
通过大量扫描英文书籍,可以得出如下结果(,这里只探究原理,并不追究这个统计的准确性):
26个字母在日常用语中的使用频率并不一样,比如字母E的使用频率遥遥领先,字母Z使用频率最低,这个相当于语言所残留在文字中的指纹,很难察觉但是真实存在。
根据这个原理,扫描“随机密码”文本,统计出各个字母的使用频率分布,找出使用频率最高的那个字母,极可能就是加密后的字母E。
3.随机加密还有很多变种,双重加密,擦掉“指纹”使得加密方式更进一步加固,不得不感叹古人的智慧,数学之美真奇妙。
简单的说,就是位移加密。
比如你的密码是ABCDE
然后设置凯撒密码的偏移量为3的话
那加密之后的密码就是DEFGH
这应该是个加密算法的题吧??
y=x+k(MOD 26)这个叫做恺撒密码。
凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。
凯撒密码(移位密码):公式Y=(X+k)(mod 26):X是原码字母在字母表中的位置,Y是码文在字母表中的位置,k是位移量,也就是密钥。
所以,你只要给我k,我就能给你将这段字母解密了。
我宣布,已经破解了这段密码。答案就是 irememberyourloveliness
i remember your loveliness 我记得你的可爱。
上面公式中的k应该是k=7,解密的时候,再拿对应字母减去7.
比如P,P往前7个字母是i, 如果不够减,就加26再减。
在密码学中,恺撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
恺撒密码的加密、解密方法还能够通过同余的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为: E(x) = (x + n) mod 26.
解密就是:
D(x) = (x - n) mod 26.
显而易见,一旦确定了某两个字母的对应关系(即n的值),这种移位密码很容易被破解。
因此,为了使密码有更高的安全性,单字母替换密码就出现了。
明码表: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
密码表: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
但是这种加密方式依然可以破解,根据字母使用频度表,分析密文中的字母频率,将其对照即可破解。
不仅如此,凯撒加密对加密数据也是有要求的,一般情况下,它只支持对基本的英文字母进行加密,如果对中文等亚太地区的文字进行加密,结果可想而知,你的隐私将毫无保留的出现在众人面前。有人说,我们可以扩展这个算法,使它支持所有的文字,这么做是可行的,如果采用同余式的方式实现,代码几乎不怎么需要改动,只要字符集本身是Unicode就可以了。但是这种加密的安全性很难满足应用的要求。如果采用单字母替换的方式,程序将需要构建两个巨大的字符数组去保存他们的映射关系,而且扩展性也不好,当然也是不可行的。这样看来,凯撒加密岂不是一无是处了,其实对于一般的应用,凯撒加密还是足以应付的,只要我们对它稍作改进。