java凯撒密码课程设计论文

合集下载

凯撒密码算法实现 解释说明以及概述

凯撒密码算法实现  解释说明以及概述

凯撒密码算法实现解释说明以及概述1. 引言1.1 概述在现代密码学中,凯撒密码是一种最基础的替换密码算法,广泛应用于加密通信和信息保护领域。

该算法通过对明文中的每个字母进行固定位数的偏移来实现加密和解密操作。

本文将详细介绍凯撒密码算法的实现原理、加密过程和解密过程,并探讨其应用领域、安全性分析以及局限性和改进方向。

1.2 文章结构本文共分为五个部分:引言、凯撒密码算法实现、凯撒密码的应用和局限性、实际案例分析与研究成果概述以及结论和总结。

在引言部分,我们将简要介绍文章的概述、目的以及整体结构。

接下来的各个部分将深入探讨凯撒密码算法相关内容,并展示其在不同领域的应用案例和研究成果。

1.3 目的本文旨在向读者介绍凯撒密码算法,并通过对其原理和实现过程的解释,提供一个清晰而全面的认识。

同时,我们还将探讨凯撒密码算法在实际应用中存在的局限性,并提出相应的改进方向。

通过本文的阅读,读者将有机会了解凯撒密码算法在信息安全领域的地位和作用,并对其实际应用提供一定的参考价值。

以上为文章“1. 引言”部分的详细内容。

2. 凯撒密码算法实现:2.1 凯撒密码简介:凯撒密码是一种简单的替换密码,最早由古罗马军事统帅凯撒使用。

它的加密过程基于字母表中的偏移值,即将明文中的每个字母按照固定数量进行平移,得到密文。

凯撒密码是一种单字母替代密码,也被称为移位密码。

2.2 凯撒密码加密过程:凯撒密码的加密过程很简单。

首先,选择一个移位值(也称为偏移量),通常为正整数。

然后,将明文中的每个字母按照移位值进行右移(在字母表中顺时针方向)。

如果超出了字母表的边界,则从另一侧继续计数。

这里是一个示例:假设我们选择了移位值为3。

对于明文中的每个字母,我们将它右移3个位置。

明文: "HELLO"密文: "KHOOR"H →K (右移3位)E →H (右移3位)L →O (右移3位)L →O (右移3位)O →R (右移3位)因此, "HELLO"经过凯撒密码加密后变为"KHOOR"。

凯撒密码实验报告册(3篇)

凯撒密码实验报告册(3篇)

第1篇一、实验背景凯撒密码是一种古老的加密技术,由罗马皇帝凯撒发明。

它是一种替换加密,通过将明文字母表中的字母按照一个固定的偏移量进行替换,生成密文。

凯撒密码是最简单、最广为人知的加密技术之一,其加密和解密过程都非常简单。

二、实验目的1. 理解凯撒密码的加密和解密原理;2. 掌握凯撒密码的编程实现;3. 分析凯撒密码的安全性,了解其局限性;4. 比较凯撒密码与其他加密算法的差异。

三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm四、实验内容1. 凯撒密码加密和解密算法实现2. 凯撒密码安全性分析3. 凯撒密码与其他加密算法的比较五、实验步骤1. 凯撒密码加密和解密算法实现(1)定义凯撒密码加密和解密函数```pythondef caesar_encrypt(text, shift):encrypted_text = ""for char in text:if char.isalpha():shifted = ord(char) + shiftif char.isupper():if shifted > ord('Z'):shifted -= 26elif char.islower():if shifted > ord('z'):shifted -= 26encrypted_text += chr(shifted) else:encrypted_text += charreturn encrypted_textdef caesar_decrypt(text, shift):decrypted_text = ""for char in text:if char.isalpha():shifted = ord(char) - shiftif char.isupper():if shifted < ord('A'):shifted += 26elif char.islower():if shifted < ord('a'):shifted += 26decrypted_text += chr(shifted)else:decrypted_text += charreturn decrypted_text```(2)测试凯撒密码加密和解密函数```pythonif __name__ == "__main__":text = "Hello, World!"shift = 3encrypted_text = caesar_encrypt(text, shift)decrypted_text = caesar_decrypt(encrypted_text, shift)print("Original text:", text)print("Encrypted text:", encrypted_text)print("Decrypted text:", decrypted_text)```2. 凯撒密码安全性分析凯撒密码的安全性非常低,因为其密钥空间只有26个可能的值(即字母表中的字母数量)。

java课程设计凯撒加密解密

java课程设计凯撒加密解密

java课程设计凯撒加密解密一、教学目标本章节的教学目标旨在让学生掌握Java语言实现凯撒加密和解密的方法。

通过本章节的学习,学生应达到以下目标:1.知识目标:了解凯撒加密和解密的基本原理;掌握Java语言的基本语法和编程技巧;理解循环、条件语句在程序中的应用。

2.技能目标:能够使用Java语言编写简单的凯撒加密和解密程序;能够分析并解决程序中的错误和问题;能够协作完成编程任务,提高团队协作能力。

3.情感态度价值观目标:培养对计算机科学的兴趣和好奇心;培养学生的创新精神和实践能力;培养学生的团队合作意识和沟通能力。

二、教学内容本章节的教学内容主要包括以下几个部分:1.凯撒加密和解密的基本原理;2.Java语言的基本语法和编程技巧;3.循环、条件语句在程序中的应用;4.凯撒加密和解密程序的编写与调试。

第1课时:凯撒加密和解密的基本原理;第2课时:Java语言的基本语法和编程技巧;第3课时:循环、条件语句在程序中的应用;第4课时:凯撒加密和解密程序的编写与调试。

为了提高教学效果,本章节将采用以下教学方法:1.讲授法:讲解凯撒加密和解密的基本原理,以及Java语言的基本语法和编程技巧;2.案例分析法:分析典型的凯撒加密和解密案例,引导学生理解并掌握相关知识;3.实验法:让学生动手编写凯撒加密和解密程序,培养学生的实践能力;4.讨论法:学生进行小组讨论,分享编程心得,提高学生的团队协作能力。

四、教学资源为了支持教学内容和教学方法的实施,本章节将准备以下教学资源:1.教材:Java编程入门教程;2.参考书:Java语言程序设计;3.多媒体资料:凯撒加密和解密的案例视频;4.实验设备:计算机、网络环境。

五、教学评估本章节的教学评估将采用多元化的评价方式,以全面、客观地评价学生的学习成果。

评估内容包括:1.平时表现:通过课堂参与、提问、回答问题等环节,评估学生的学习态度和积极性;2.作业:布置相关的编程作业,评估学生的理解和应用能力;3.实验报告:评估学生在实验过程中的操作能力和解决问题的能力;4.考试:设置期末考试,检验学生对凯撒加密和解密知识的掌握程度。

《密码学》课程教学改革初探—以恺撒密码为例

《密码学》课程教学改革初探—以恺撒密码为例

《密码学》课程教学改革初探—以恺撒密码为例1.随着教学改革的进一步推广,密码学课程作为信息安全专业的核心课程,其改革与创新对于信息安全专业的人才培养具有至关重要的作用。

针对传统《密码学》课程教学中,教学内容枯燥、学生学习兴趣不浓厚、与实际应用联系不紧密等问题,本文对恺撒密码的实验内容进行教学设计,将课程内容与CTF比赛相结合,在教学中充分凸显学生的学习主体性,对推动课程的改革与发展,维护国家和社会信息安全有积极意义。

1.教学改革;密码学;恺撒密码1引言密码学是信息安全专业课程,密码学实验是密码学课程的配套实验课程,能够帮助学生理解密码学理论知识,尤其是密码算法的原理及加解密过程。

以往的密码学实验课程主要以编程为主,让学员仅仅能明白加解密的原理,但与实际的应用脱离。

本文以恺撒密码为例进行课程设计,结合新时代课程教学改革和CTF 比赛模式,设计恺撒密码实验。

为培养学生将理论知识转换为实际成果的能力,拓展学生的视野,理解密码学知识应用的能力,为将来维护国家和社会信息安全打下基础。

2课程设计2.1实验目的通过使用网络攻防系统以CTF夺旗赛的形式让学生熟练掌握恺撒密码算法,加深对该算法的理解与运用,同时提高python程序设计能力。

2.2实验要求信息安全专业学生共60人,以10人为一组,分为6组进行CTF比赛,每名学生需在规定时间内完成CTF试题。

2.3实验内容(一)选择题(做题15分钟,讲解10分钟)1、密码学包括哪两个分支(D)A.对称加密与非对称加密B.序列算法与分组算法C.DES和RSAD.密码编码学与密码分析学2、在密码学中,需要被变换的原消息被称为什么?(D)A.密文B.算法C.密码D.明文3、在凯撒密码中,每个字母被其后第几位的字母替换?(C)A.5B.4C.3D.24、DES的有效密钥长度是多少bit?(B)A.64B.56C.512D.85、根据密码分析者所掌握的信息多少,可将密码分析分为:选择密文攻击、已知明文攻击、选择明文攻击和(A)。

凯撒加密解密C语言课程设计

凯撒加密解密C语言课程设计
fclose(mingwen) 关闭并保存mingwen.txt文件
fclose(miwen); 关闭并保存miwen.txt文件
清屏 返回菜单
4. 替代解密流程图
流程图
(对流程图加以说明。可以把关键语句放在此处,加以注释说明)
建立mingwen.txt和miwen.txt文件
ch=getchar() 接收回车字符
printf("\t\t\t\t欢迎使用\n\n");
printf("\t\t**************************************\n");
printf("\t\t**************************************\n");
}
tuichu()//退出菜单
k=strlen(r)j 计算数组r长度
for i=0 to k
关闭并保存miwen.txt文件
打开miwen.txt文件
space(h,r) 将明文去空格并放到数组h中
m=strlen(h) 计算数组h长度
m%n==0
是 否
hang=m/n hang=m/n+1 j=0
for i=0 to n for i=m to hang*n
解密:输入密文后再输入移位位数则可输出明文;
(3)凯撒加密和解密:
加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;
解密:输入密文后再输入移位位数则可输出明文;
(4)统计单词的个数;
(5)退出。
2.1
(各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等
这块大家问题最多了,这里不是写程序代码,而是写流程图里面各个主要函数的作用,函数之析课程设计题目的要求

凯撒密码(Java)

凯撒密码(Java)

凯撒密码(Java)事实上就是把每个字母偏移⼀下⽽已,并且字符不限于a-zA-z,可以是别的,那就很显⽽易见了,代码如下:定义⼀个Caesar密码类,成员变量只有密钥,也就是偏移量key代码如下:public class CaesarCrypto {private int key;public CaesarCrypto(int key) {// TODO Auto-generated constructor stubthis.key = key;}public String getCipher(String plain) {char[] cipherChars = plain.toCharArray();for (int i = 0; i < cipherChars.length; i++) {cipherChars[i] = (char) (cipherChars[i] + this.key);}return new String(cipherChars);}public String getPlain(String cipher) {char[] cipherChars = cipher.toCharArray();for (int i = 0; i < cipherChars.length; i++) {cipherChars[i] = (char) (cipherChars[i] - this.key);}return new String(cipherChars);}public static void main(String[] args) {String text = "Java is the best language in the world!";System.out.println("明⽂:" + text);CaesarCrypto cc = new CaesarCrypto(4);String cipher = cc.getCipher(text);System.out.println("密⽂:" + cipher);System.out.println("解密" + cc.getPlain(cipher));}}结果如下:明⽂:Java is the best language in the world!密⽂:Neze$mw$xli$fiwx$perkyeki$mr$xli${svph%解密Java is the best language in the world!。

凯撒密码--java实现

凯撒密码--java实现

凯撒密码--java实现关于凯撒密码的介绍我就不多说了,感兴趣的可以看,我主要说的是java如何实现。

我发现⽹上有写java加密解密的,写的时候发现只需要⼀个转换函数就可以了,可以作为加密⽤,也可以⽤作解密⽤。

我们要解密的字符串是R uxen hxd.*** 凯撒密码*/public class CaesarCipher {public static void main(String[] args) {//需要转换的字符串String str = "R uxen hxd.";for (int i=0;i<26;i++){System.out.println(i+" "+caesarSwitch(str,i));}}/*** 凯撒转换* @param str 需要转换的字符串* @param step 偏移量* @return 转换后的字符串*/public static String caesarSwitch(String str, int step){//字符串转数组char[] chars = str.toCharArray();//计算右移的步数step = step%26;if(step<0){step = step + 26;}//开始变换for (int i=0;i<chars.length;i++){char c = chars[i];//⼩写if (c>='a'&&c<='z'){c = (char) (c + step);if (c>'z')c -= 26;}//⼤写if (c>='A'&&c<='Z'){c = (char) (c + step);if (c>'Z')c -= 26;}//把转换后的字符再给原来数组chars[i] = c;}return String.copyValueOf(chars);}}结果:0 M pszi csy.1 N qtaj dtz.2 O rubk eua.3 P svcl fvb.4 Q twdm gwc.5 R uxen hxd.6 S vyfo iye.7 T wzgp jzf.8 U xahq kag.9 V ybir lbh.10 W zcjs mci.11 X adkt ndj.12 Y belu oek.13 Z cfmv pfl.14 A dgnw qgm.15 B ehox rhn.16 C fipy sio.17 D gjqz tjp.18 E hkra ukq.19 F ilsb vlr.20 G jmtc wms.21 H knud xnt.22 I love you.23 J mpwf zpv.24 K nqxg aqw.25 L oryh brx.经过穷举我们发现I love you.是有意义的字符串,原字符串R uxen hxd.是经过右移4步或左移动22步得到我们的加密字符串。

密码学论文

密码学论文

传统加密技术论文软件学院计算机科学与技术07999222李文龙网络信息的飞速发展给人类社会带来巨大的推动与冲击,同时也产生了网络系统安全问题。

计算机网络的安全问题越来越受到人们的重视。

密码技术是保护计算机信息安全的主要手段之一,使用密码技术可以保证信息的机密性,还可以保证信息的完整性和确定性,防止信息被篡改、伪造和假冒。

说道密码技术,以下先了解什么是加密技术。

加密技术包括两个元素:算法和密钥。

算法是将普通的文本(或者可以理解的信息)与一串数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。

在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。

密钥加密技术的密码体制分为对称密钥体制和非对称密钥体制两种。

相应地,对数据加密的技术分为两类,即对称加密(私人密钥加密)和非对称加密(公开密钥加密)。

对称加密以数据加密标准(DES,Data Encryption Standard)算法为典型代表,非对称加密通常以RSA(Rivest Shamir Ad1eman)算法为代表。

对称加密的加密密钥和解密密钥相同,而非对称加密的加密密钥和解密密钥不同,加密密钥可以公开而解密密钥需要保密。

对称密码是一种加密使用相同密钥的密码体制,也称为传统密码算法。

对称密码利用密钥和加密算法将明文变成密文。

运用相同的密钥和解密算法,而已从密文恢复出明文。

对密码的两种攻击方法是基于密码算法性质的密码分析和基于穷举密钥的穷举攻击。

传统对称密码(计算机出现前)使用代换和/或置换技术。

代换技术。

代换技术将明文元素(字符、比特)映射为密文元素,置换技术将明文元素的位置进行系统的置换。

转轮技术是计算机出现前使用代换技术的复杂硬件设备。

隐写技术是一种将秘密信息隐藏于其他更大信息中的一种技术,是得其他人无法区分它的存在或隐藏信息的内容。

传统经典加密主要采用了两种加密技术:替代技术和置换技术。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

攀枝花学院课程设计题目:院(系):年级专业:姓名:学号:指导教师:二〇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();}}设计总结我们知道加密算法的一般类型有对称和非对称两种。

相关文档
最新文档