一. 实验目的:

学习常见的古典密码学算法,现代对称加密算法,非对称加密算法加密解密消息,通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解;使用Cryptool软件加深对于现代对称加密算法,非对称加密算法加密解密消息的理解;使用MD5加密和破解工具(MD5Verify、MD5Crack),掌握MD5算法的作用及安全性分析。

二. 实验仪器设备及软件: 

运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VC(Windows)等C语言编译环境;Cryptool软件;MD5Verify、MD5Crack。

三. 实验原理:

古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。

1.替代密码

    替代密码的原理是使用替代法进行加密,就是将明文由其它的字母、数字或符合所代替后形成密文。这里每个明文字母对应的密文字母可能是一个,也可能是多个。接收者对密文进行逆向替换即可得到明文。替代密码有五种表现形式:

单表代替

    即简单替代密码或者称为单字母代替,明文字母表中的一个字符对应密文字母表中的一个字符。这是所有加密中最简单的方法。

多名码代替

    就是将明文字母表中的字符映射为密文字母表中的多个字符。多名码简单代替早在1401年就由DuchyMantua公司使用。在英文中,元音字母出现频率最高,降低对应密文字母出现频率的一种方法就是使用多名码,如e可能被密文5、13或25替代。

多音码代替

就是将多个明文字符代替为一个密文字符。比如将字母“i” 和“j”对应为“K”,“v”和“w”代替为“L”最古老的这种多字母加密始见于1563年由波他的《密写评价》(De furtiois literarum notis)一书。

多表代替

即由多个简单代替组成,也就是使用了两个或两个以上的代替表。比如使用有5个简单代替表的代替密码,明文的第一个字母用第一个代替表,第二个字母用第二个表,第三个字母用第三个表,以此类推,循环使用这五张代替表。多表代替密码由莱昂.巴蒂斯塔于1568年发明,著名的维吉尼亚密码和博福特密码均是多表代替密码。

 

2.置换密码

置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,实现明文信息的加密。置换密码有时又称为换位码。  

3.DES

算法思想:DES算法将输入的明文分为64位的数据分组,使用64位的密钥进行变换,每个64位明文分组数据经过初始置换、16次迭代和逆初始置换3个主要阶段,最后输出得到64位密文

4.MD5

MD5是 Rivest 于1991年对MD4的改进版本。与MD4算法一样,MD5 算法将输入的信息进行分组,每组仍以512 位(64个 字节),顺序处理完所有分组后输出128 位散列值。在每一组消息的处理中,都要进行4 轮、每轮16 步、总计64 步的处理。其中,每步计算中含一次左循环移位,每一步结束时将计算结果进行一次右循环移位。

5.非对称加密算法

  (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。

  (2)甲方获取乙方的公钥,然后用它对信息加密。

  (3)乙方得到加密后的信息,用私钥解密。

如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

四. 实验内容及步骤:

分析替代密码算法和置换密码算法的功能需求,详细设计实现替代密码算法和置换密码算法的数据结构和流程,给出测试用例和测试步骤,得出测试和结论。替代密码算法和置换密码算法的实现程序必须提供加密和解密两个接口:int encrypt()和int decrypt()。当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR。

1替代密码:

根据实验远离部分对替代密码算法的介绍,创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。替代密码算法的远离是使用替代法进行加密,就是将明文的字符用其他字符替代后形成密文。例如字母a、b、c、d,用D、E、F、G做对应替换后形成密文。参考代码:daihuan.c

运行程序,对于明文:hello to myself 进行加密,密钥:5,观察密文是什么。对于密文解密出明文是否是hello to myself。请截图:

 

再次运行程序,从键盘输入你的姓名拼音进行加密,密钥:5,观察密文是什么。对于密文解密出明文。请截图:

 

2置换密码:

根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。

置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。

矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。

 

参考代码如:zhihuan.c

运行程序,对于明文attack begins at five进行加密,密钥:ciper,附运行程序后的截图:

 

3.使用Cryptool软件

A)  设密钥为3,明文为hello world,使用凯撒密码算法计算密文,并对密文解密,。请截图显示你的程序运行结果

 

B)设密钥为SECURITY,明文为NETWORK INFORMATION SECURITY,使用维吉尼亚算法计算密文,并对密文解密。请截图显示你的程序运行结果

 

C)设密钥为CIPHER,明文为balloon book fill,使用Playfair算法计算密文,并对密文解密。请截图显示你的程序运行结果

 

D)拓展训练:搜索相关资料,了解希尔密码(Hill Password)、ROT-13(回转13位,rotateby13places,有时中间加了个减号称作ROT-13)两种密码的原理,使用Cryptool软件进行加解密实验

练习1:明文为:

How can you tell an extrovert from an

introvert at NSA?Va gur ryringbef,

gur rkgebireg ybbxf ng gur BGURE thl'f fubrf.

使用ROT-13算法计算密文,并对密文解密。请截图显示你的程序运行结果

 

练习2甲方收到乙方的一封密文信息,密文如下:

WOWUYSBACPGZSAVCOVKPEWCPADKPPABUJCQLYXQEZAACPP

 

 请截图显示你的程序运行结果

E) 使用Cryptool软件,用DES算法加密,任选密钥,任选一个文件加密(约30M),并对密文解密。

 

 

F)  使用Cryptool软件,生成自己的公钥私钥对,用RSA算法加密明文NETWORK INFORMATION SECURITY,并用私钥对其解密。再用RSA算法加密刚才DES算法中加密的文件,比较两种算法的运算时间。

 

 

G)  使用Cryptool软件,用MD5计算消息“请于明天上午10点发起总攻”的散列值;再计算“请于明天上午11点发起总攻”的散列值,比较其不同。

 

使用MD5加密和破解工具

i) 使用MD5Verify加密字符串和文件

ii) 使用MD5Crack破解MD5密文

 

五、实验结果与分析:

1、你所知道的古典密码算法还有那些?详细说明具体的加密和解密过程。

古典密码学可以分为代替密码(也叫做移位密码)和置换密码(也叫做换位密码)两种,其中代替密码典型的有Caesar密码,仿射变换等,置换密码有单表置换和多表置换等。

单表置换:意思是一个明文字母对应的密文字母是确定的。根据这个特点,利用频率分析可以对这样的密码体制进行有效的攻击。方法是在大量的书籍、报刊和文章中,统计各个字母出现的频率。例如,e出现的次数最多,其次是t,a,o,I等等。破译者通过对密文中各字母出现频率的分析,结合自然语言的字母频 率特征,就可以将该密码体制破译。鉴于单表置换密码体制具有这样的攻击弱点,人们自然就会想办法对其进行改进, 来弥补这个弱点,增加抗攻击能力。法国密码学家维吉尼亚于1586年提出一个种多表式 密码,即一个明文字母可以表示成多个密文字母。其原理是这样的:给出密钥 K=k[1]k[2]…k[n],若明文为M=m[1]m[2]…m[n],则对应的密文为C=c[1]c[2]…c[n]。 其中C[i]=(m[i]+k[i]) mod 26。例如,若明文M为data security,密钥k=best,将明 文分解为长为4的序列data security,对每4个字母,用k=best加密后得密文为 C=EELT TIUN SMLR 从中可以看出,当K为一个字母时,就是凯撒密码。而且容易看出,K越长,保密程度就越高。显然这样的密码体制比单表置换密码体制具有更强的抗攻击能力,而且其加密、解密均可用所谓的维吉尼亚方阵来进行,从而在操作上简单易行。该密码可用所谓的维吉尼亚方阵来进行,从而在操作上简单易行。