- 最后登录
- 2013-3-7
- 在线时间
- 2682 小时
- 阅读权限
- 20
- 注册时间
- 2008-12-1
- 积分
- 5190
- 帖子
- 3572
- 精华
- 2
- UID
- 63606
- 性别
- 保密
- 积分
- 5190
- 帖子
- 3572
- 精华
- 2
- UID
- 63606
- 性别
- 保密
|
密码学基本概念及破解方法
By 小RR (转载请注明原作者) 密码学属于数学的一个分支。密码学又可分为密码编译和密码分析两个小分支,也就是俗称的加密和解密。
第一部分 概念部分
有几个最基本的概念需要明白一下:
1.
明文:也就是加密前的文字。
2.
密文:加密后的文字。
3.
密钥:也就是key,分为加密密钥和解密密钥。作用也就相当于开保险箱的钥匙。也可分为公钥public key和私钥private key,公钥就是大家都能使用的钥匙,私钥就是只有加密的人才知道的钥匙。而破解此类密码需要同时有这2把钥匙。
最早(也不知道是不是最最早= =)的加密形式是在一个圆木条上卷上厚厚一卷纸,然后在纸的边缘处写字。写完后把木条保存好,把纸重新卷起来。于是,要传达的信息的明文就被加密成密文了,而我们的密钥也就是那根木条。只要把木条保存完好,敌人就是截取了那张写满信息的纸,也无法阅读出什么意思。比如要找到直径完全相同的才行。由于纸的厚度很薄,所以木条的直径哪怕相差几毫米,也会导致完全无法破解。
根据密钥的不同特点,我们也能将密码学分成两个体系,为对称加密体系和非对称加密体系。对称加密体系的特点就是,在加密和解密过程中我们需要的是同一把钥匙,比如锁上保险箱和开保险箱的箱子;而非对称加密体系的的加密解密过程需要的密钥就是两把不同的钥匙,最著名的实例就是20多年来久经考验的RSA算法,由于涉及到密码学三大数学难题,暂时还没有有效方法破解,所以用处相当广泛。
第二部分 实例讲解
由于不少复杂的密码学问题都需要涉及到电脑的算法设计和高深的数学能力,所以这里介绍到的一般都是一些比较简单的几种方法。
1.
栅栏加密
假设我们想要加密的明文是“I love cubes.”
把要加密的文字去掉空格分成n组。最常见的是分成2组。I love cubes这句话一共有10个字母,如果分成2组的话,每组就是5个字母:
ilove
cubes
再按照从上至下、从左至右(当然也可以是从下至上,从右至左等不同的变种方法)的顺序写出来,就变成了icluobvees,这也就是密文了。
栅栏加密的特点就是字母不会太多。并且,有时候在对拼音字母加密中,可以考虑将sh、ch、ang、ao等一整个生母或韵母捆绑在一起,这样就加大了破解的难度。
2.
凯撒密码
凯撒密码是凯撒大帝用来避免敌人破解出密码而想出的一种加密方式。是一种很基本的字母重新排序。对于字母表中的每个字母,对其进行“+1”后,a就变成了b,b变成了c……y变成了z,z变成了a。那么数字“+1”就是这里的密钥。
还是对于I love cubes这句话,我们把这句话每个字母-3,那么这句话就变成了f ilsb zrybp。在敌人不知道钥匙是“-3”的情况下,是很难很快得做到破解的。
现在的凯撒密码产生了很多变种。比如说,对于第i位的字母,加上i!(i的阶乘),那句子越长,破解难度也就越大。又比如说按照键盘表顺序加密吖,对应顺序就是a-Q, b-W, c-E, d-R等。
3.
各种小技巧的加密技巧
ASCII代码:在计算机中,所有字符都能用ASCII代码来代表。比如感叹号(!)是十进制中的33,大写字母A是十进制中的65,小写字母b是十进制中的98。缺点是可以看出其的范围:所有字符的范围都是十进制中的32到126。当然如果将其和凯撒密码等密码混合使用的话就能加大破解难度。
进制转换:在一个足够大(16-bit以上)的系统中,一般足够将够大的数字进行进制转换。比如十进制中的107,换成二进制就变成了1101011,八进制就是153,十六进制中就是6B。缺点是可以从数列中的最大数中看出它是几进制的,比如对于数列:
154157166145,很容易看出里面最大数是7,就可猜测它是八进制数。
倒序:在复杂加密体系中倒序是经常出现的一环。也就是将所有数字或字母倒序写出来。要加大难度的话,可以将字母转换成ASCII码,再倒序。比如把字母d变成十进制ASCII码100,再将其倒序变成001,就很难有人会想到这是b了。
哈希:经典代表MD5算法。是公认的不可逆的算法。简单说就是数学中的一一对应,但由于数据量及其庞大,进行搜索需要庞大时间和内存。主要应用于与计算机学中相关的密码学中,不详细展开。
[ 本帖最后由 r_517 于 2010-3-5 00:53 编辑 ] |
-
总评分: 经验 + 40
查看全部评分
|