- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java课程设——凯撒加密解密程序
JAVA面向对象编程课程设计论文
凯撒加密解密程序
学生姓名: 赵 席 兵
学生学号: 200710802050
院(系): 计算机学院
年级专业: 07信息与计算科学
2010-12-14摘要
凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。例如,如果字母的位数是3,明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是凯撒密码加密和解密的密钥。目录
第一节 4
第二节 4
第三节 5
参考文献 12
第一节 实例说明
凯撒密码是罗马扩张时期朱利斯?凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动2位,则字母A将变为C,字母B将变为D,…,字母X变成Z,字母Y则变为A,字母Z变为B。因此,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文:“Jgnnq”。而如果要解密,则只要将字母向相反方向移动同样位数即可。如密文“Jgnnq”每个字母左移两位变为“Hello”。这里,移动的位数“2”是加密和解密所用的密钥。
编程思路首先获取要加密的内容以及密钥,凯撒密码的密钥即字符移动的位数。由于凯撒密码器的移位是针对字符的,因此需要将待加密的内容中每个字符取出,然后针对每个字符分别加以移位。主要步骤如下:
(1) 读取要加密的字符串、密钥
String s=args[0];
int key=Integer.parseInt(args[1]);
分析:作为示例,程序中通过命令行参数传入要加密的字符串。凯撒密码器的密钥比较简单,只是移动的位数,这里不妨通过命令行参数传入。由于移动的位数为整数,因此使用Integer.parseInt( )方法进行了转换。
(2) 取出字符串中每个字符
for(int i=0;is.length( );i++){
char c=s.charAt(i);
分析:这里使用字符串类的 charAt()方法取出每个字符,分别加以移位。
(3) 对每个字符进行移位
c+=key%26;
if(ca) c+=26;
if(cz) c-=26;
分析:由于字母表中共26个字符,因此移位前先将移动的位数(key)和26取模。由于Java中字符和整型可自动转换,因此将字符加上一个正整数即代表在字母表中右移多少位。如果移动的位数是负值,则代表在字母表中左移多少位。
尽管在移动之前已经将移动的位数和26取了模,但通过这种方式实现右移或左移仍可能发生超界。如字母x右移4位应该是字母b,但将字母x增加4后超出26个字母的范围。因此移位后使用两个if语句判断一下,如果向左超界(ca)则增加26;向右超界(cz)则减去26。
此外由于大写字母和小写字母判断是否超界的依据不同,程序中将字符分为大写和小写分别处理。import java.io.*;
public class Caesar{
public static String path;
public static String estr=;
public static char c;
public static void Encode(String str,int n){
for(int i=0;istr.length();i++){
c=str.charAt(i);
if(c=ac=z)
if(c+n%26=z) estr+=(char)(c+n%26); else estr+=(char)(a+((n-(z-c)-1)%26));
else if(c=Ac=Z)
if(c+n%26=Z) estr+=(char)(c+n%26); else estr+=(char)(A+((n-(Z-c)-1)%26));
else if(c=0c=9)
if(c+n%10=9) estr+=(char)(c+n%10); else estr+=(char)(0+((n-(9-c)-1)%10));
else estr+=c;
}
}
public static void Decode(String str,int n){
for (int i = 0; i str.length(); i++) {
c=str.charAt(i);
if (c= ac=z)
if(c-n%26=a) estr+=
您可能关注的文档
- Java基础常英语词汇(共70个).doc
- Java实验三代码.doc
- Java实验项二 面向对象编程 3部分.doc
- Java就业培教程作者张孝祥书中源码.doc
- java常用加方式.doc
- java编写的吃蛇游戏源码.doc
- JAVA编程基-02变量和运算符.doc
- JAVA语言与向对象程序设计期末考试.doc
- Java课程设大纲.doc
- Java课程设说明.doc
- 2025年思茅市特岗教师招聘考试真题题库含答案解析(夺冠).docx
- 2025年思茅市特岗教师招聘考试真题题库附答案解析.docx
- 2025年思茅市特岗教师笔试真题汇编附答案解析.docx
- 2025年思茅市特岗教师笔试真题汇编及答案解析(夺冠).docx
- 2025年思茅市特岗教师招聘考试真题汇编附答案解析(夺冠).docx
- 2025年储能电站运营成本预测报告.docx
- 2025年思茅市特岗教师笔试真题汇编及答案解析(夺冠).docx
- 2025年思茅市特岗教师招聘考试真题汇编及答案解析(夺冠).docx
- 2025年思茅市特岗教师招聘真题题库附答案解析.docx
- 《2025年AI行业刚需中小企业提效工具成本控制方法比较报告》.docx
最近下载
- 国开(SC)-数据库运维-形考3(考核内容:第5章~第7章,30%)-学习资料.docx VIP
- 中国视神经脊髓炎谱系疾病诊断与治疗指南解读PPT课件.pptx VIP
- 出口用【箱单+发票】英文.docx VIP
- GB∕T42430-2024血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验.pptx VIP
- 部编版小学六年级下册语文单元测试卷全册(含答案).pdf VIP
- 高血压病的护理常规 高血压护理常规.doc VIP
- QUICK-376D-中文说明书使用手册.pptx VIP
- 部编人教版五年级下册小学语文全册单元测试卷(含期中期末试卷).doc VIP
- 2025年部编版小学五年级下册语文全册单元测试卷及答案 .pdf VIP
- GB∕T42430-2024血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验.pptx VIP
原创力文档


文档评论(0)