实验一 古典加密算法
一、 实习目的
1、 熟悉java平台的开发环境
2、 理解常见古典加密算法:凯撒密码、多字母替代密码、多表替代密码
3、 理解古典加密技术中的替换技术、置换技术。
二、 实习内容
1、 问题描述
凯撒密码是把字母表中的每个字母用该字母后的某个字母进行代替。
凯撒密码的通用加密算法是:C=E(p)=(P+K)mod26 0<k<26
凯撒密码的通用解密算法是:C=E(p)=(P-K)mod26 0<k<26
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,此时加密内容不合理,运行结果如下:
经过以上测试结果可知,程序正确
五、 实习总结:
通过这次实习,我加深了对对凯撒密码的定义的理解,即是把字母表中的每个字母用该字母后的某个字母进行代替,在对程序设计时,改开始没有考虑周全,没有考虑到移动位数为负值的情况,从而出现当输入值不正确时程序会报错,其中越界情况比较麻烦,既要考虑到
要将输入的数字取模,防止越界,又要考虑到将字母右移后要判断是否越界,其次还要考虑所输入字符是否符合标准,总之这次实习也告诉我缜密的思维在程序设计中也是比不可少的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论