信息安全实验LibTomCrypt 实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东大学软件学院
信息安全课程实验报告
实验步骤与内容:
一、知识准备
首先我们得到了LibTomCrypt库,另外还有LibTomMath库,使用visualstudio 2013。
那么我们要学会怎么使用这两个库:
那么首先是在visualstudio 2013中打开libTomMath库,直接编译(build),生成项目,然后会在 Debug文件里面找到 libtommath.lib 文件,然后将这个文件复制到 LibTomCrypt库里面的header里面,
然后从VS2013直接打开LibTomCrypt库,配置一下库和 h头文件的路径,然后直接编译,生成项目。大概向下面那样:
然后我们新建一个工程,并且将以 libtomcrypt开头的 .h 文件,全部复制到我们新建的引用库的 include 文件夹里面里面可以开始在我们工程 Crypt 里面引用我们的 .lib 文件。
同样需要给这个 Crypt工程配置库路径和头文件路径,如下面:
另外还需要添加一个.lib的名字
然后我们就可以编写代码了。首先我们要对 LibTomCrypt库有个理解,然后我们需要引入tomcrypt.h的库,然后我们需要了解有多少加解密方法:
在这里我们用到了 AESDESBlowFish三种方法、
然后我们还要看一下有多少个加解密模式。密码算法的工作模式就是怎样使用密码算法来达到一定的目的,比如怎样加密一个文件。工作模式有很多种,仅用于加密的,用来构造HASH 函数的,仅用于生成消息验证码的,用于伪随机数生成的,既能加密又能同时生成验证码的,专门针对磁盘加密。
然后,我们用到了四个加密模式:CBC,CFB,OFB,CTR
-
二、代码解析
然后,我们就拿CBC模式进行解析一下,首先我们需要注册一下加密方法:
在注册完加密方法之后,我们需要利用int find_cipher(const char *name)
获取已注册的密码算法索引值
下面我们就可以根据选择的加密方法和工作模式进行初始化:
代码如下:
然后我们根据选择的加密还是解密的模式进行相对应的加解密方法:
首先是加密:
我们需要读取明文并且需要创建密文,所以在开始之前我们已经声明了三个文件流的指针变
量,plaintext,cryptText,decryptText.
并且在这里我们需要用到 C语言的 fopen方法,在读文件的时候,我们要以二进制文件的形式来读取,这样会避免一些由于读取文件时候而出现的不必要的错误:
加密流程:
在这里我们首先使用 memset这个函数对读取的明文块长和加密后的密文块进行初始化吧
然后使用fread方法每次读取固定大小的块长,
然后使用cbc_encrypt方法进行加密:
和fewrite方法将加密好的密文 pt写入到文件流里面:
直到文件读取结束,加密完成。
解密流程:
同样我们需要读取密文和创建解密文件:
和加密流程相对应的是我们用到了cbc_decrypt这个解密方法,
并且将解密好的明文写入到文件里面:
直到密文文件读取结束,解密完成。
三、运行测试:
我们选择加密方法和加密模式:然后选择明文-a.txt,再选择密文b.txt,输入IV初始向量和key密钥。
然后我们看一下明文和密文:
然后我们进行解密:
最后我们看一下解密之后的明文:
如图所示,我们看到是加解密成功!
四、代码附录
.// Crypt.cpp : Defines the entry point for the console application. .//
.#include"stdafx.h"
.#include"tomcrypt.h"
.#include
.//注册方法
.int regis(intMethod){
.
.if(Method==1){