




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福州大学数学与计算机科学学院计算机密码学上机实验报告专业和班级数学2班姓名吴少敦成绩学号030801212实验名称古典密码学实验实验目的和要求(1)练习古典密码学的加密和解密;(2)练习仿射密码和置换密码的加密和解密实验任务(1)熟悉仿射密码。(2)熟悉置换密码。实验内容仿射密码:import java.util.Scanner;public class FangsheMima public FangsheMima() System.out.println(请输入两个密钥:);Scanner sacn1 = new Scanner(System.in);int k1 = sacn1.nextInt();int k2 = sacn1.nextInt();if (gcd(k1, 26) != 1) System.out.println(密钥 错误!); else boolean boo = true;do System.out.print(请选择功能:);System.out.print(1:加密 );System.out.print(2:解密 );System.out.println(3:退出 );int t = sacn1.nextInt();switch (t) case 1:System.out.println(请输入明文:);Scanner sacn2 = new Scanner(System.in);String mingwen = sacn2.nextLine();System.out.println(明文: + mingwen);System.out.println(密钥:k1= + k1 + ,k2= + k2);System.out.println(密文: + jiaMi(mingwen, k1, k2);break;case 2:System.out.println(请输入密文:);Scanner sacn3 = new Scanner(System.in);String miwen = sacn3.nextLine();System.out.println(密文: + miwen);System.out.println(密钥:k1= + k1 + ,k2= + k2);System.out.println(明文: + jieMi(miwen, k1, k2);break;case 3:boo = false;System.out.println(已经退出!);break; while (boo);public int gcd(int a, int b) int k = 0;do k = a % b;a = b;b = k; while (k != 0);return a;/ 辗转相除球最大公约数public int ni(int a, int b) int i = 1;while (a * i % b != 1) i+;return i;/ a相对b的逆public String jiaMi(String mingwen, int k1, int k2) String miwen = ;char c = new charmingwen.length();for (int i = 0; i = a & ci = A & ci = Z) ci = (char) (k1 * (ci - A) + k2) % 26 + A);miwen += ci;return miwen;/ 加密public String jieMi(String miwen, int k1, int k2) String mingwen = ;char c = new charmiwen.length();int tem = 0;for (int i = 0; i 64 & ci 91) tem = (ni(k1, 26) * (ci - 65) - k2) % 26;if (tem 97 & ci 123) tem = (ni(k1, 26) * (ci - 97) - k2) % 26;if (tem 0) ci = (char) (tem % 26 + 26 + 97); else ci = (char) (tem % 26 + 97);mingwen += ci;return mingwen;/ 解密public static void main(String args) new FangsheMima();置换密码:package zhihua;import java.util.Scanner;import java.util.Vector;public class ZhihuanMama private Scanner scan = new Scanner(System.in);private int m;private int x;private int y;public ZhihuanMama() System.out.println(请输M:);m = scan.nextInt();System.out.println(请输入密钥:);System.out.print(x);for (int i = 0; i m; i+) System.out.print(t);System.out.print(i + 1);System.out.println();y = new intm;int min = 0;Vector vector = new Vector();for (int i = 0; i = m) System.out.println(密钥超出 M !);min = scan.nextInt() - 1; else if (min 0) System.out.println(密钥超出 M !);min = scan.nextInt() - 1;yi = min;vector.add(min);x = new intm;init(y);boolean boo = true;do System.out.print(请选择功能:t);System.out.print(1:加密 t);System.out.print(2:解密 t);System.out.println(3:退出 t);int t = scan.nextInt();if (t 3) System.out.println(请选择正确的功能:);t = scan.nextInt();switch (t) case 1:System.out.println(请输入明文:);Scanner scan1 = new Scanner(System.in);String mingwen = scan1.nextLine();String str1 = trim(mingwen);jaMi(str1);break;case 2:System.out.println(请输入密文:);Scanner scan2 = new Scanner(System.in);String miwen = scan2.nextLine();String str2 = trim(miwen);jieMi(str2);break;case 3:boo = false;System.out.println(已经退出!);break; while (boo);/ 加密密钥xpublic void init(int y) for (int i = 0; i y.length; i+) for (int j = 0; j y.length; j+) if (yj = i) xi = j;public String trim(String wen) String str = ;for (int i = 0; i wen.length(); i+) if (wen.charAt(i) != ) str += wen.charAt(i);return str;/ 去空格/ 加密public void jaMi(String mingWen) String miWen = ;String jmingwen = jieduan(mingWen, m);for (int i = 0; i jmingwen.length; i+) miWen += zhihuan(x, jmingweni);System.out.println(加密后密文:);miWen = miWen.toUpperCase();System.out.println(miWen);/ 解密public void jieMi(String miWen) String mingWen = ;String jmingwen = jieduan(miWen, m);for (int i = 0; i jmingwen.length; i+) mingWen += zhihuan(y, jmingweni);System.out.println(解密后密文:);mingWen = mingWen.toLowerCase();System.out.println(mingWen);/ 截断原文public String jieduan(String wen, int m) Vector vector = new Vector();String s = ;int i = 0;for (; i wen.length(); i += m) if (i + m wen.length() s = wen.substring(i, i + m); else s = wen.substring(i, wen.length();vector.add(s);String str = new Stringvector.size();for (int j = 0; j str.length; j+) strj = vector.get(j);return str;/ 置换public String zhihuan(int miyao, Stri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年海南省通信网络技术保障中心招聘考试笔试试题(含答案)
- 2025年国家卫生健康委医药卫生科技发展研究中心招聘考试笔试试题(含答案)
- 2025年桂林市机电职业技术学校教师岗位招聘考试笔试试题(含答案)
- 咖啡民宿结合创新创业项目商业计划书
- 移动广告联盟与收益分成模式创新创业项目商业计划书
- 农品易购站创新创业项目商业计划书
- 农产品豆腐制品创新创业项目商业计划书
- 2025年甘肃省酒泉老年大学招聘教师试题(含答案)
- 社交电商用户忠诚度提升创新创业项目商业计划书
- 汽车自动化库存管理创新创业项目商业计划书
- 中华人民共和国治安管理处罚法2025修订版测试题及答案
- 新学期教学工作会议上校长讲话:把功夫下在课堂里把心思放在学生上把质量落到细节中
- 建筑施工三检制度
- 湖北群艺积分制管理操作流程
- GB/T 4883-2008数据的统计处理和解释正态样本离群值的判断和处理
- GB/T 4213-2008气动调节阀
- GB/T 30230-2013运动水壶的安全要求
- GB/T 24267-2009建筑用阻燃密封胶
- GB/T 14842-2007铌及铌合金棒材
- 2021年安徽省初中学业水平考试语文试卷及答案
- 目标管理与执行力培训课件
评论
0/150
提交评论