古典恺撒移位密码破解
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。
古典恺撒移位密码破解相关推荐
- 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 ...
- 湖南大学21夏训练四20.恺撒Caesar密码
[问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并 ...
- 4.20. 恺撒Caesar密码
[问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并 ...
- 4.20 恺撒Caesar密码
[问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并 ...
- 恺撒Caesar密码
题目描述 [问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破 ...
- 密码学之恺撒加密(03)
恺撒加密 文章目录 恺撒加密 一.中国古代加密 二.外国加密 三.凯撒位移加密 四.凯撒加密和解密 五.频度分析法破解恺撒加密 密码棒 频率分析解密法 英文字母频率统计表: 以下是本篇文章正文内容 一 ...
- 题目 1214: 恺撒密码
时间限制: 1Sec 内存限制: 128MB 题目描述:(原题链接) 恺撒生活在充满危险和阴谋的时代. 恺撒面对的最困难的问题是生存. 为了生存, 他决定创造一种密码. 这种密码听起来难以置信, 如果 ...
- 古典密码算法(移位密码算法、维吉尼亚算法)
古典密码算法(凯撒.维吉尼亚) A. 1-1.移位密码算法 [实验目的] 1) 学习移位密码的原理 2) 学习移密码的实现 [实验原理] 算法原理 a) 移位密码就是对26个字母进行移位操作,可以移动 ...
- 【JS】设计并实现“恺撒密码”
问题描述 移位数N=3和7时,分别加密并恢复一段文字,例如"Peace and Love". 要求:(不)区分大小写,但能识别空格.标点: 恺撒密码是古罗马时代经常使用的一种经典加 ...
- 古典密码学--移位密码
首先了解密码学的基本目的是使得两个在不安全的信道中通信的人,通常称为Alice和Bob,以一种使他们的敌手Oscar不能明白和理解通信内容的方式进行通信. 定义 一个密码体制是满足以下条件的五元组(P ...
最新文章
- 局部图像描述子——Harris角点检测器
- SAP发布S4/HANA 意义超过R3
- C++——《算法分析与设计》实验报告——贪心算法与回溯法
- [tarjan][树形dp] 洛谷 P2515 软件安装
- C++ vector的初始化、添加、遍历、插入、删除、查找、排序、释放操作
- oracle并发执行max,跪求大量并发执行insert into select语句的方案
- 95-36-210-ChannelHandler-系统Channel-TimeoutHandler1
- 使用TensorFlow.js进行人脸触摸检测第2部分:使用BodyPix
- SFB 项目经验-52-Outlook-2010/2013-连接Exchange 2016需要密码!
- 2021最新SSM博客,功能完善,初云博客增强版
- 无线路由器破解教程-CDlinux(by 星空武哥)
- CV学习笔记-BP神经网络代码Python实例
- 被互联网婚恋榨干的你,还会相信爱情吗?
- 【程序员学理财】有哪些普通人应该知道的经济学常识?
- 管理学定律--墨菲定律
- 用python画花瓣-用python画花瓣
- Leetcode 2214. Minimum Health to Beat Game [Python]
- 【jenkins】Synopsys Detect入门简介
- Tabby使用之:中文乱码问题
- 防热服的设计数学建模_高温作业专用服装设计各位厂家提供点解题思路 2018年全国大学生数学建模A题...