密码学课设报告.docx
- 文档编号:13003444
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:10
- 大小:54.43KB
密码学课设报告.docx
《密码学课设报告.docx》由会员分享,可在线阅读,更多相关《密码学课设报告.docx(10页珍藏版)》请在冰点文库上搜索。
密码学课设报告
指导教师姓名
教研室
信息与计算科学
课程设计题目
数字签名系统
人数
1
学时
2周
设计目的、任务和要求
设计目的:
本课程设计力求为学生提供一个理论联系实际的机会。
通过实践,建立密码学理论的整体思想,锻炼编写、调试程序的能力,学习文档编写规范,培养独立学习、吸取他人经验、探索前沿知识的习惯。
同时,课程设计可以充分弥补课堂教学及普通实验中知识深度与广度有限的缺陷,更好地帮助学生从全局角度把握课程体系。
设计任务:
(1)在深入理解基于RSA/ElGamal的数字签名算法的基础上,设计数字签名系统;
(2)要求输入信息(可以是汉字或英文,信息量要求不受限制),或者是文本文档。
使用RSA/ElGamal算法进行数字签名,RSA/ElGamal中模数n的长度不低于100比特。
(3)提供良好地用户界面。
(4)要求提供所设计系统的报告及完整的软件。
设计的方法和步骤
第一步:
进行系统设计;
第二步:
代码编码;
第三步:
对实现部分的软件功能或者模块进行测试
第四步:
提交完整可执行软件,准备答辩;
第五步:
答辩,演示软件,教师根据实际情况提出测试用例,学生作最后的修改和完善,教师对软件运行部分进行评分;
第六步:
完成课程设计报告并提交。
设计工作计划
1.本次课程设计的时间是2周,工作计划如下:
2.任务书下达,理解选题,明确软件功能,分析和设计:
2天;
3.分析和设计报告的撰写:
1天
4.实现部分设计及文档编写;1天;
5.编码及调试:
4天;
6.报告完善及打印:
1天;
7.成果提交和验收:
1天。
主要参考资料
1、陈鲁生、沈世镒《现代密码学》
(2)北京:
科学出版社,2008年
2、MichaelWelschenbach编著,赵振江,连国卿等译,《编码密码学——加密方法的C与C++实现》,电子工业出版社,2003年6月;
3、
教研室签字:
年月日
学院签字:
年月日
一、需求分析 4
1.1设计背景 4
1.2设计目的与意义 4
1.3概述 4
二、系统设计 5
2.1 系统主要目标 5
2.2 系统运行环境 5
2.3 功能模块与系统结构 5
2.3.1系统初始化 5
2.3.2签名变换 5
2.3.3签名验证 6
三、详细设计 7
3.1 系统初始化 7
3.2 签名变换 8
3.3 签名验证 9
3.4数据处理 10
五、软件测试 16
4.1系统初始化 16
4.2数据加密 16
4.3数据解密 16
4.4系统补充 17
六、个人总结 18
一、需求分析
1.1设计背景
密码学是一门古老深奥的学科,长期以来,只在极少范围内使用,计算机密码学是研究信息加密解密及其变换的一门学科,是数学及计算机的交义学科,随着计算机网络和计算机通讯的发展,计算机密码学得到了前所未有的飞速发展,提高了各类型组织的管理水平和效率,促进了社会的发展,但是,计算机的保密也变得由其重要,我们需要一种措施保护数据的安全性,数字签名系统就是一种加密方法,极大地保护了数据的安全。
文章阐述了ElGamal数字签名算法的设计特色,详细介绍了ElGamal算法具体的签名验证的算法函数。
此外,ElGamal数字签名与一般公钥密码体制签名的不同之处,是具有高安全性和实用性。
我们根据算法的安全性、代价以及算法与实现特性的原则设计了ElGamal简单常用的数字签名系统。
1.2设计目的与意义
目的:
保密性:
防止用户的标识或者信息被读取;
广泛性:
对所有数据进行加密解密;
数据完整性:
防止数据被更改,加密解密后不改变原数据。
意义:
随着计算机的广泛应用,计算机信息保密问题越来越重要,密码技术是对数据进行保密的安全可
靠的方法,有力得保护了个人隐私。
1.3概述
本系统使用ElGamal数字签名算法进行加密解密。
进入用户界面,随机生成秘钥,再输入需要加密的数据,最后进行解密进行数据测试。
二、系统设计
系统主要目标
(1)在深入理解基于RSA/ElGamal的数字签名算法的基础上,设计数字签名系统;
(2)要求输入信息(可以是汉字或英文,信息量要求不受限制),或者是文本文档。
使用RSA/ElGamal算法进行数字签名,RSA/ElGamal中模数n的长度不低于100比特。
(3)提供良好地用户界面。
(4)要求提供所设计系统的报告及完整的软件。
系统运行环境
本软件使用VC语言编写
测试平台:
WindowsXPProfessional
使用软件:
VisualC++6.0
功能模块与系统结构
数字签名流程图
主要功能模块如下:
2.3.1系统初始化
(1)选取大素数p,
是一个本原元。
p、g和公开。
(2)随机选取整数b,且2≤b≤p-2。
计算:
B是公开的加密密钥,b是保密的解密密钥。
2.3.2签名变换
对任意明文
是待签名的消息。
秘密随机选取一个整数a,1≤a≤p-2。
对消息M的签名为
其中
签名验证流程图
主要功能模块如下:
2.3.3签名验证
对于
,
,如果
则确认(r,s)为消息m的有效签名。
因为
所以
因此,如果
是消息
的正确签名,则一定有
三、详细设计
系统初始化
主要代码:
#include"stdafx.h"
#include"ELGamaltool.h"
#include"ELGamaltoolDlg.h"
#include"BigInt.h"
#include"CCommon.h"
#include"ELGmaltest1.h"
voidCELGamaltoolDlg:
:
OnBUTgenerate()
{
AfxBeginThread(mmyproc,&m_progress);
CStringcaption;
AfxGetMainWnd()->GetWindowText(caption);
AfxGetApp()->BeginWaitCursor();
AfxGetMainWnd()->SetWindowText("正在生成随机密钥");
CTimet0=CTime:
:
GetCurrentTime();
m_publicp=_T("");
p.Mov(0);
p.GetPrime(32);
p.Put(m_publicp);
g.Mov(0);
g.GetPrime(6);
g.Put(m_publicg);
b.Mov(0);
b.GetPrime(6);
b.Put(m_privateb);
B.Mov(0);
B.Mov(g.RsaTrans(b,p));
B.Put(m_publicB);
a.Mov(0);
a.GetPrime(6);
A.Mov(0);
A.Mov(g.RsaTrans(a,p));
ready=1;
CDialog:
:
UpdateData(FALSE);
AfxGetApp()->EndWaitCursor();
AfxGetMainWnd()->SetWindowText(caption);
}
签名变换
主要代码如下:
voidCELGmaltest:
:
OnOK()
{
CELGamaltoolDlg*pParent=(CELGamaltoolDlg*)GetParent();
if(pParent->ready==0)
{
m_out=_T("请先生成随机密钥");
CDialog:
:
UpdateData(FALSE);
return;
}
CDialog:
:
UpdateData(TRUE);
length=m_in.GetLength();
if(length==0)
{
m_out=_T("输入明文");
CDialog:
:
UpdateData(FALSE);
return;
}
if(m_out.GetLength()>0)
m_out=_T("");
AfxGetApp()->BeginWaitCursor();
CTimet0=CTime:
:
GetCurrentTime();
str_mw="";
intc1;
for(inti=0;i { c1=m_in[i]; if(c1<0) c1+=256; str_mw+=Int10_To_Hexstr(c1,2); } length=str_mw.GetLength(); CBigInttemp; CBigInttemp1; CStrings,str; intj=0; for(i=0;i { temp.Mov(pParent->B.RsaTrans(pParent->a,pParent->p)); str=str_mw.Mid(i,2); temp1.Mov(Hexstr_To_Int10(str)); result[j].Mov(temp.Mul(temp1)); result[j].Mov(result[j].Mod(pParent->p));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 密码学 报告