实验一 古典加密算法

  • 格式:doc
  • 大小:157.50 KB
  • 文档页数:4

下载文档原格式

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

实验一古典加密算法

一、实习目的

1、熟悉java平台的开发环境

2、理解常见古典加密算法:凯撒密码、多字母替代密码、多表替代密码

3、理解古典加密技术中的替换技术、置换技术。

二、实习内容

1、问题描述

凯撒密码是把字母表中的每个字母用该字母后的某个字母进行代替。

凯撒密码的通用加密算法是:C=E(p)=(P+K)mod26 0

凯撒密码的通用解密算法是:C=E(p)=(P-K)mod26 0

2、基本要求

实现凯撒密码的加密、解密算法,能够根据用户选择密钥和明文进行加解密。

3、实现提示

若用户输入错误信息则可进行提示。

三、程序设计

1、用户可以通过键盘输入一行字符串和所要移动的位数,作为所要实现加

密的明文。

2、由于字母表中共有26个字符,因此,移位前应先将移动的位数和26取

模。

Java平台中可以实现字符和证书的自动转换,因此将字符加上一个正整数代表在字母表中右移位数。如果移动的位数为负值,则代表在字母中的左移位。

3、移位后仍要判断是否超界,如果超界,则应该做相应的运算,如果c<’a’,

则应该加上26,如果c>’z’,则应该减去26,同理c<’A’,则应该加上26,如果

c>’Z’,则应该减去26.

四、实现测试

运行界面如下:

测试一:输入一串字符sdfasdfsd,输入一个正整数5,运行结果如下:

测试二:输入同测试一相同的一串字符sdfasdfsd,输入一个负整数-5,运行结果如下:

测试三:输入一串字符xyzxxxy,输入一个正整数5,此时已经超界,运行结果如下:

测试四:当输入的字符中有数字等非字母字符时例如sdf323,此时加密内容不合理,运行结果如下:

经过以上测试结果可知,程序正确

五、实习总结:

通过这次实习,我加深了对对凯撒密码的定义的理解,即是把字母表中的每个字母用该字母后的某个字母进行代替,在对程序设计时,改开始没有考虑周全,没有考虑到移动位数为负值的情况,从而出现当输入值不正确时程序会报错,其中越界情况比较麻烦,既要考虑到要将输入的数字取模,防止越界,又要考虑到将字母右移后要判断是否越界,其次还要考虑所输入字符是否符合标准,总之这次实习也告诉我缜密的思维在程序设计中也是比不可少的。