实验一 古典加密算法
- 格式:doc
- 大小:157.50 KB
- 文档页数:4
实验一古典加密算法
一、实习目的
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,此时加密内容不合理,运行结果如下: 经过以上测试结果可知,程序正确 五、实习总结: 通过这次实习,我加深了对对凯撒密码的定义的理解,即是把字母表中的每个字母用该字母后的某个字母进行代替,在对程序设计时,改开始没有考虑周全,没有考虑到移动位数为负值的情况,从而出现当输入值不正确时程序会报错,其中越界情况比较麻烦,既要考虑到要将输入的数字取模,防止越界,又要考虑到将字母右移后要判断是否越界,其次还要考虑所输入字符是否符合标准,总之这次实习也告诉我缜密的思维在程序设计中也是比不可少的。