当前位置:文档之家› java凯撒密码课程设计论文

java凯撒密码课程设计论文

攀枝花学院课程设计题目:院(系):年级专业:姓名:学号:指导教师:二〇XX年XX月XX日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书摘要计算机与网络技术的发展将人类带入信息化社会,随之而来的是倍受关注的信息安全问题。

现代密码学已成为信息安全技术的核心技术。

加解密算法,成为重要的信息安全防护技术,正是现代密码学的主要应用研究成果。

其中,凯撒密码作为一种最为古老的对称加密体制,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。

凯撒密码加解密是一种典型的对称加密算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。

大多数对称算法中,加、解密的密钥是相同的,这些算法也称为秘密密钥算法或单密钥算法。

它要求发送者和接收者在安全通信之前,商定一个密钥。

在加解密时密钥的保护尤为重要,如果第三方知道就会造成信息失窃,所以,在算法设计时要做详细的分析。

此外,文章中还说明了凯撒密码产生的背景,如何完成加解密,并分析了凯撒密码加解密的优缺点。

关键词:凯撒密码,文件加密,防护技术1前言1.1背景由于信息的安全保护问题已经显得十分突出,信息保护的现实需要,使得数据加密算法和技术迅速进入了现代社会,了解并有效使用数据加密算法技术已成为计算机技术和通信领域的专业技术人员和广大用户的迫切需求,这是信息化社会发展阶段的重要标志,数据库加密也是信息安全必不可少的安全手段。

而密码则可以有效而且可行的保护信息安全的办法,有效是指密码能够做到使信息不被非法窃取,不被篡改或破坏,可行是说它需要付出的代价是可以接受的。

如今数据的加密解密技术已随着计算机技术的迅猛发展,由早期的军事和外交领域,逐步伸展到交通、工业经济、科学技术、社会安全和公共生活的各个领域,成为现代社会中保护信息的重要手段和工具。

因此密码学的研究就成为一个重要的来解决信息安全问题的一种手段了,而且有着重要的地位。

在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。

在竞争激烈的大公司中,工业间谍经常会获取对方的情报。

密码技术是保护信息安全的主要手段之一。

密码技术世界和数学,计算机科学,电子与通信等诸多学科于一身的交叉学科。

他不仅具有信息加密功能,而且具有数字签名,身份验证,秘密分存,系统安全等功能。

所以使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整信和正确性,防止信息被篡改,伪造或假冒。

随着我国愈来愈现代化,使用密码的频率会愈来愈多,这就促使了数据加密技术的发展。

1.2开发工具此次课程设计采用的开发环境是JRE,所选用的开发语言是java。

这种开发工具和开发语言都是当今比较流行的。

Eclipse 是一个十分优秀的用于开发Java,,Eclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。

Eclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。

可以说Eclipse几乎囊括了目前所有主流开元产品的专属eclipse开发工具。

2 加密的概念、理由及方法2.1加密的概念数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。

该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

2.2加密的理由当今网络社会选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。

而且这种不安全性是互联网存在基础——TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。

为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。

加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。

一个简单的例子就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。

通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取得用户的密码,如果用户是Root用户或Administrator用户,那后果将是极为严重的。

总之无论是单位还是个人在某种意义上来说加密也成为当今网络社会进行文件或邮件安全传输的时代象征!2.3加密的方法传统的加密算法主要分为两大类:替代密码和换位密码。

替代密码使用一组密文字母代替一组明文字母以隐藏明文,但保持明文字母的位置不便。

替代密码又可细分为单表替代密码(凯撒密码)和多表替代密码(费杰尔算法)。

换位密码是采用移位法进行加密的。

他把明文的字母重新排列,本身不变,但位置变了。

换位密码又可细分为列换位法和矩阵换位法。

传统加密的好处就是加密模型是稳定的,是人们所共知的,从而适用于各个行业的加密。

但由于数据加密解密技术的快速发展,破解技术的不断发展和计算机整体性能的不断提升,破解传统加密已经很快了。

所以传统加密算法已不能满足通信的需要,但传统加密奠定的历史基础是务须质疑的,并且在过去带来了很大帮助。

传统加密算法发展的趋势是和公钥加密算法结合,达到既有对称加密算法的优势由有公钥加密算法的优势。

传统加密的基本过程是:用户A生成一对密钥并将其中的一把作为公开密钥向其他用户公开;得到该公开密钥的用户B使用该密钥对机密信息进行加密后再发送给用户A;用户A再用自己保存的秘密密钥对加密后的信息进行解密。

用户A只能用其秘密密钥解密由其公开密钥加密后的任何信息。

凯撒加密法,就是将字母表中的每个字母向后移动3位,比如a被替换成d,b 被替换成f,以此类推。

字母表的最后三位xyz,会被替换为abc。

比如hello,加密之后是khoor.对于拉丁字母之外的其他字符,一律不加密。

3 设计简介及设计方案论述3.1 需求分析随着我国对计算机的普及,计算机和通信技术已经在我国得到了广泛发展及应用,从而使我们对信息的安全存储、安全处理和安全传输的需要越来越迫切。

密码是有效而且可行的保护信息安全的办法,有效是指密码能够做到使信息不被非法窃取,不被篡改或破坏,可行是说它需要付出的代价是可以接受的。

因此我设计一个字符的加密解密工具来保护信息安全。

此工具要求通过将字符拖入相应的界面从而实现相应的凯撒加密解密功能,主界面中有三个标签分别为“加密”、“解密”,用于实现文件的加密和解密。

可以选择用于加密的算法进行不同的字符串加密或解密。

3.2总体设计框架根据系统的设计要求,设计的系统功能模块如图3-1所示。

图3-13.3信息加密技术简介在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。

在竞争激烈的大公司中,工业间谍经常会获取对方的情报。

密码技术是保护信息安全的主要手段之一。

密码技术世界和数学,计算机科学,电子与通信等诸多学科于一身的交叉学科。

所以使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整信和正确性,防止信息被篡改,伪造或假冒。

随着我国愈来愈现代化,使用密码的频率会愈来愈多,这就促使了数据加密技术的发展。

3.3.1加密解密技术摡述所谓加密,就是把称为“明文”的可读信息转换成“密文”的过程;而解密则是把“密文”恢复为“明文”的过程。

加密和解密都要使用密码算法来实现。

密码算法是指用于隐藏和显露信息的可计算过程,通常算法越复杂,结果密文越安全。

在加密技术中,密钥是必不可少的,密钥是使密码算法按照一种特定方式运行并产生特定密文的值。

[1]使用加密算法就能够保护信息安全使之不被窃取、不被篡改或破坏。

可把加密算法看作一个复杂的函数变换,x=(y,k)x代表密文,即加密后得到的字符序列,y代表明文即待加密的字符序列,k表示密钥,当加密完成后,可以将密文通过不安全渠道送给收信人,只有拥有解密密钥的收信人可以对密文进行解密即反变换得到明文。

3.3.2加密算法对称算法又叫做传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。

在大多数对称算法中,加/解密密钥是相同的。

这些算法也叫秘密密钥或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。

只要通信需要保密,密钥就必须保密。

算法主要分为两步:初始置换和逆置换。

凯撒加解密是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目(一般为3个错位字母)进行偏移后被替换成密文。

4 详细设计4.1流程图图4-15 设计结果及分析5.1 设计结果展示实验完成后可以进行调试,本程序是在eclipse环境中编写,进行调试后最终实验了基本的文件加密解密的功能。

最终的实现结果以用户界面的现实呈现给用户。

用户界面模块是实现用户与计算机信息交换以直接形象、操作简便呈现在用户面前,在该加密解密工具中拥有的界面如下:5.2 设计结果分析及说明设计中主要使用的是对称加密算法,因此该工具可以同时利用对称加密解密算法对字符串进行加密对所生成的密文文件进行解密,对于加密解密前后字符串的内容完全一致。

当需要加密某个字符串时,只需要在图形界面中点击加密,再输入要加密的字符串根据算法来实现加密。

同样在进行字符串的解密时我们只需将于需要只需要在图形界面中点击解密,将要解密的字符串输入,就可以得到相应的解密字符串。

两次密码,当两次密码输入相同时,才能实现相应的加密解密功能。

当输入密码不正确时,该工具会进行报错。

解密时也是一样,只有正确的输入密码才能解密,否则会提示出错。

在进行加密解密时我设置了一个进度条,用来观察加密解密的进度从而判断该工具是否运行正常.结果如下图所示:5.2 程序运行结果在加密时的结果:在解密时的结果:在输出非“0 或 1”时的结果:附件1.源程序import java.util.Scanner;//提示语句,及新建//public class Test {void mj(){Scanner in = new Scanner(System.in);//输入语句//System.out.print("请选择操作(1.加密2.解密):");int n=in.nextInt();if(n == 1){System.out.print("请输入待加密的字符串:");String str = in.next();String jm="";int key = 3;//算法核心//for(int i = 0;i < str.length();i++){char c = str.charAt(i);if(c >= 'a'&&c <= 'z'){if(c>='x'&&c<='z'){c-=26;c+=key;}else{c+=key;}}else if(c >= 'A'&&c <= 'Z'){if(c>='X'&&c<='Z'){c-=26;c+=key;}else{c+=key;}}jm += c;}//提示信息输出操作所给的结果//System.out.print("加密后的字符串是:"+jm);System.out.print("\n输入任意建继续,0结束程序:");n=in.nextInt();if(n==0){System.out.print(" 谢谢使用本程序,欢迎再次使用!");}else{this.mj();}}//若输出的数不为“0或1”则继续//else if(n == 2){System.out.print("请输入待解密的字符串:");String str = in.next();String jm="";int key = -3;for(int i = 0;i < str.length();i++){char c = str.charAt(i);if(c >= 'a'&&c <= 'z'){if(c>='a'&&c<='c'){c+=26;c+=key;}else{c+=key;}}else if(c >= 'A'&&c <= 'Z'){if(c>='A'&&c<='C'){c+=26;c+=key;}else{c+=key;}}jm += c;}System.out.println("解密后的字符串:"+jm);System.out.print("\n输入任意建继续,0结束程序:");n=in.nextInt();if(n==0){System.out.print(" 谢谢使用本程序,欢迎再次使用!");}else{this.mj();}}//各个情况的不同执行道路//else{System.out.print("请输入1或2,其他字符无效!\n输入任意建继续,0结束程序:");n=in.nextInt();if(n==0){System.out.print(" 谢谢使用本程序,欢迎再次使用!");}else{this.mj();}}}//主方法//public static void main(String[] args) {Test mj=new Test();System.out.println("******欢迎使用凯撒加密器******");mj.mj();}}设计总结我们知道加密算法的一般类型有对称和非对称两种。

相关主题