《信息安全导论》
实验报告
实验名称:
密码学实验
学员姓名: 培养类型: 所属学院: 指导教员: 所属单位:
杨毅 科学和工程技术类 计算机学院 赵文涛
学号: 专业: 年级: 职称:
201406043013 信息安全 2014级 教授
计算机学院网络工程系
计算机学院网络工程系制
1、
实验名称
密码学实验
2、 实验简介
基于Crypto++库的加密程序设计。通过搭建基于Crypto++库调用的环
境,来完成文件加密,文件完整性检测,数字签名这一系列功能。
Crypto++ 库是一个用c++ 编写的密码类库,是一个得到广泛应用的开源软件,提供了密码学中的大多数加密算法,算法可靠,接口丰富易用。
密码学中的加密分为对称加密和非对称加密。常见的对称加密算法有AES算法和DES算法,对称加密采用唯一的密钥,加密和解密都用同一密钥,特点包括操作检测,速度快,适合大规模文件的加解密。由于RSA计算过程进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,所以这里我采用DES算法。
密码学中的完整性检测依靠的是哈希(Hash)算法,又称三列算法。哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式,常用的哈希算法包括MD5,SHA-0,SHA-1等。这里我采用MD5。
数字签名同样依靠非对称加密算法,正如我所用的RSA算法,与加密时不同的是,签名时,发送方用自己的私钥对文件进行加密,当接收方接收到文件后,再用发送方的公钥对文件进行解密。
3、 实验设计
3.1总体设计。
按照实验指导书上的指导,跟着步骤走完成安装实验环境和配置Crypto++,接着操作与使用Crypto++库完成文件加解密、文件完整性检测、数字签名程序的编写,并运行截图。再实现文件加密、完整性检测、数字签名等多种功能的组合,以便于可以方便调用三种功能。
, 3.2功能设计。
先将三种功能分别实现,继而将三种功能放在一起方便使用。 3.3代码设计。
3.3.1先确定需要用的各种头文件,并在include后面设置命名空间,引用Crypto++库。如下图1
图1 添加头文件,命名空间,库
3.3.2DES算法的主要难度相对较小,主要代码在于以二进制打开文本,进行读取加密解密。主要代码布置如图2
图2 DES算法主要代码
3.3.3MD5算法难度也不大,我编写的主要代码如下图3所示
图 3 MD5算法
主要代码
3.3.4RSA算法是我认为最难的,我将其代码主要分为一下几部分编写:
生成RSA密钥对、加密、解密、签名、检验签名如下图4、5、6、7所示。
图4生成RSA密钥对
图5加密
图6解密