1. cipher text

bmjs dtz uqfd ymj lfrj tk ymwtsjx dtz bns tw dtz inj ymjwj nx st rniiqj lwtzsi

刚看到需要解密的文本,就觉得它很像移位密码,于是开始试了一下。
源代码:
求最大公因数:Arithmetic.java

public class Arithmetic {int x = 0;int y = 0;public int euclid(int a,int b){int first,second;first = a;second = b;int temp;if(first<second){temp = first;first = second;second = temp;}while(first%second!=0){temp = first%second;first = second;second = temp;}return second;}
}

移位密码的解密:Affine.java

class Affine {String deciphering(String s, int a, int b){// 解密的实现char[] ch = s.toCharArray();int length = ch.length;// 密文长度int[] in = new int[length];for (int i = 0; i < ch.length; i++) {if(ch[i] == ' '){  //如果是空格就不用解密,直接跳过}else {in[i] = ch[i] - 97;// 利用ascii变成0-25数字in[i] = ((in[i] - b) * a) % 26;  // 解密if (in[i] < 0) {in[i] += 26;}ch[i] = (char) (in[i] + 97);// 将数字变成字母}}return String.valueOf(ch);// 将字符串数字变成String类型的字符串,返回}
}

主类:Test.java

public class Test {public static void main(String[] args) {Arithmetic arithmetic = new Arithmetic();final int MOD = 26;int [] gcd = new int[12];int m = 0;String out = null;for(int i=1;i<MOD;i++){if((arithmetic.euclid(i,MOD)) == 1) {   //求与26互素的数gcd[m] = (arithmetic.euclid_2(i,MOD)+26)%26; //求这些数mod26的逆,并把它加入gcd数组m++;}}Scanner input = new Scanner(System.in);System.out.println("请输入需要解密的密文:");String s = input.nextLine();// 输入密文Affine affine = new Affine();int k =1;for(int i=0;i<12;i++) {for (int j = 0; j < 26; j++) {out = affine.deciphering(s, gcd[i], j);System.out.println("第"+k+"条明文为:"+out);k++;}}}
}

实验结果截图:

最后成功破解了由仿射密码加密的密文,得到了明文when you play the game of thrones you win or you die there is no middle ground。

古典恺撒移位密码破解相关推荐

  1. Caesar(恺撒)密码加密解密-----Java实现

    Caesar密码是传统的代替加密法,当没有发生加密(即没有发生移位)之前,其置换表如1-1所示. 表1-1  Caesar置换表 a b c d e f g h i j k l m A B C D E ...

  2. 湖南大学21夏训练四20.恺撒Caesar密码

    [问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并 ...

  3. 4.20. 恺撒Caesar密码

    [问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并 ...

  4. 4.20 恺撒Caesar密码

    [问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并 ...

  5. 恺撒Caesar密码

    题目描述 [问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破 ...

  6. 密码学之恺撒加密(03)

    恺撒加密 文章目录 恺撒加密 一.中国古代加密 二.外国加密 三.凯撒位移加密 四.凯撒加密和解密 五.频度分析法破解恺撒加密 密码棒 频率分析解密法 英文字母频率统计表: 以下是本篇文章正文内容 一 ...

  7. 题目 1214: 恺撒密码

    时间限制: 1Sec 内存限制: 128MB 题目描述:(原题链接) 恺撒生活在充满危险和阴谋的时代. 恺撒面对的最困难的问题是生存. 为了生存, 他决定创造一种密码. 这种密码听起来难以置信, 如果 ...

  8. 古典密码算法(移位密码算法、维吉尼亚算法)

    古典密码算法(凯撒.维吉尼亚) A. 1-1.移位密码算法 [实验目的] 1) 学习移位密码的原理 2) 学习移密码的实现 [实验原理] 算法原理 a) 移位密码就是对26个字母进行移位操作,可以移动 ...

  9. 【JS】设计并实现“恺撒密码”

    问题描述 移位数N=3和7时,分别加密并恢复一段文字,例如"Peace and Love". 要求:(不)区分大小写,但能识别空格.标点: 恺撒密码是古罗马时代经常使用的一种经典加 ...

  10. 古典密码学--移位密码

    首先了解密码学的基本目的是使得两个在不安全的信道中通信的人,通常称为Alice和Bob,以一种使他们的敌手Oscar不能明白和理解通信内容的方式进行通信. 定义 一个密码体制是满足以下条件的五元组(P ...

最新文章

  1. 局部图像描述子——Harris角点检测器
  2. SAP发布S4/HANA 意义超过R3
  3. C++——《算法分析与设计》实验报告——贪心算法与回溯法
  4. [tarjan][树形dp] 洛谷 P2515 软件安装
  5. C++ vector的初始化、添加、遍历、插入、删除、查找、排序、释放操作
  6. oracle并发执行max,跪求大量并发执行insert into select语句的方案
  7. 95-36-210-ChannelHandler-系统Channel-TimeoutHandler1
  8. 使用TensorFlow.js进行人脸触摸检测第2部分:使用BodyPix
  9. SFB 项目经验-52-Outlook-2010/2013-连接Exchange 2016需要密码!
  10. 2021最新SSM博客,功能完善,初云博客增强版
  11. 无线路由器破解教程-CDlinux(by 星空武哥)
  12. CV学习笔记-BP神经网络代码Python实例
  13. 被互联网婚恋榨干的你,还会相信爱情吗?
  14. 【程序员学理财】有哪些普通人应该知道的经济学常识?
  15. 管理学定律--墨菲定律
  16. 用python画花瓣-用python画花瓣
  17. Leetcode 2214. Minimum Health to Beat Game [Python]
  18. 【jenkins】Synopsys Detect入门简介
  19. Tabby使用之:中文乱码问题
  20. 防热服的设计数学建模_高温作业专用服装设计各位厂家提供点解题思路 2018年全国大学生数学建模A题...

热门文章

  1. HALCON 3D 激光三角校准-未完持续
  2. RxSwift学习记录
  3. python 汉字 简繁体 转换方法
  4. CCF考试——201312-5I’m stuck!
  5. iterative-mergesort
  6. Internet Download Manager(V6.37版本IDM)免费序列号密钥激活版使用过程中的一些常见问题
  7. 【PAT】 1020 发邮件(错排问题)详解
  8. DTAS 3D在车身公差分析中的应用案例
  9. 开源可视化 Python 性能调优工具 VPT 发布
  10. 反正不要钱,多少看一点系列:win10环境下安装Kali Linux双系统的装机经历(个人血泪史)