恺撒密码算法 Java实现
信息安全概论
自定义密钥位数的恺撒密码加密和唯密文攻击解密算法
import java.util.Scanner;/*** 自定义密钥位数的恺撒密码加密和唯密文攻击解密算法,明文用小写表示,密文用大写表示。* 输入1或者2选择所需执行的算法,1为加密算法,2为解密算法。* 若为加密操作,输入大于0小于26的整数作为密钥的位数,若输入错误则会提醒密钥无效并终止程序。 * 输入密文或明文执行所需的解密或加密操作。* @author Riyad*/
public class Caesar
{private int key;private Scanner scan;/*** 加密算法,输入小写表示的明文,输出大写表示的密文* @apiNote 将输入的字符串转化为字符数组,并在转化的同时利用ASCII表对字符进行加法移位操作并逐个输出。* 在进行加法移位操作时,判断该字符是否为其他符号,若是,则无需进行移位。* 并判断加法操作后是否超出26个小写字母的范围,若超出,则退回到ASCII表中的前26个位置。*/public void encrypt(){System.out.print("Please enter the key of Caesar Algorithm: ");scan = new Scanner(System.in);int temp = scan.nextInt();if(temp > 0 && temp < 26) key = temp;else{System.out.println("Invalid key!");System.exit(0);}System.out.print("Please enter the plaintext: ");Scanner scan = new Scanner(System.in);String pt = scan.nextLine();scan.close();System.out.print("The ciphertext is: ");char[] c = new char[pt.length()];for(int i = 0; i < pt.length(); i++){c[i] = pt.charAt(i);if(c[i] >= 97 && c[i] <= 122) {c[i] += key;if(c[i] > 122) c[i] -= 26; c[i] -= 32;}System.out.print(c[i]);}}/*** 解密算法,唯密文攻击,输入大写表示的密文,输出小写表示的明文* @apiNote 将输入的字符串转化为字符数组,并在转化的同时利用ASCII表对字符进行减法移位操作并逐个输出。* 在进行减法移位操作时,判断该字符是否为其他符号,若是,则无需进行移位。* 并判断减法操作后是否小于26个大写字母的范围,若小于,则前进到ASCII表中的后26个位置。*/public void decrypt(){System.out.print("Please enter the ciphertext: ");Scanner scan = new Scanner(System.in);String pt = scan.nextLine();scan.close();System.out.println("The plaintext is: ");System.out.println("KEY");char[] c = new char[pt.length()];for(key = 1; key <=25; key++){System.out.print(key + "\t");for(int i = 0; i < pt.length(); i++){c[i] = pt.charAt(i);if(c[i] >= 65 && c[i] <= 90) {c[i] -= key;if(c[i] < 65) c[i] += 26;c[i] += 32;}System.out.print(c[i]);}System.out.println();}}public static void main(String[] args){System.out.print("Please enter number 1 or 2 to choose which operation you want to do (1.Encrypt 2.Decrypt): ");Scanner s = new Scanner(System.in);int flag = s.nextInt();if(flag != 1 && flag != 2) {System.out.println("Please enter the correct number!");System.exit(0);}//gaul is divided into three parts//JDXO LV GLYLGHG LQWR WKUHH SDUWVCaesar c = new Caesar();if(flag == 1) c.encrypt();else if(flag == 2) c.decrypt();s.close();}
}
恺撒密码算法 Java实现相关推荐
- 恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
题目: 恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A B C D ...
- JAVA:实现Caesar凯撒密码算法(附完整源码)
JAVA:实现Caesar凯撒密码算法 package com.thealgorithms.ciphers; import java.util.Scanner; public class Caesar ...
- Python练习:恺撒密码 I
练习:恺撒密码 I 平台:Python123.io 教师:嵩天 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的 ...
- python练习——恺撒密码 I
恺撒密码 I 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A ...
- python练习题15:恺撒密码 I
恺撒密码 I 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A ...
- 恺撒密码python代码
恺撒密码python代码 小白自己随便写的,最笨的办法 问题: 恺撒密码 ...
- Python基础编程入门实例:恺撒密码
文章目录 Python基础编程入门实例:恺撒密码 一.什么是恺撒密码 二.程序运行环境 三.恺撒密码:加密 3.1.恺撒密码加密实例程序 3.2.恺撒密码加密实例程序运行结果 四.恺撒密码:解密 4. ...
- 恺撒密码(Python练习)
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: ...
- python恺撒密码 B
恺撒密码 B ...
- 2.7 恺撒密码 B
description 恺撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: ...
最新文章
- EXP 7 网络欺诈防范 20164303 景圣
- 计算机机房综合防护,计算机机房综合防护系统技术方案
- python timestamp和datetime之间的转换_python – 在datetime,Timestamp和datetime64之间转换
- Study 1 —— HTML5概述
- 计算机程程序员英语,计算机程序员常用英语词汇(2)
- 7-2 银行家算法--申请资源 (30 分)
- react 文本框_React自动完成文本框
- 点击按钮打开选择文件对话框
- 光模块组装过程中常见问题分析及解决方法
- Flutter 入门安装——C#程序喵的Flutter之旅
- 项目管理:研发项目经理为何难做
- 选择SMA射频连接头的注意事项
- linux终端下如何下载文件,Linux终端下载文件的方法有哪些?
- 以下哪一个不属于python语言的特点-智慧树知到《Python程序设计基础》章节测试答案...
- 64位windows10操作系统,如何使用32位的IE浏览器
- vue、四级联动(省市区街道)
- 32bit GM命令
- python微信群管理_利用python实现在微信群刷屏的方法
- 在数控机床上加工零件,主要取决于加工程序
- PMI-PMP模考二错题解析(2022-01-21 21:46:29)
热门文章
- 《悲剧性选择》卡拉布雷西 epub+mobi+azw3
- 计算机准备打印却没动静,打印机显示正在打印但是没反应怎么办?
- Lenovo XiaoXin Air13Pro Win10引导ubuntu19.10双系统
- 基于k-means的大数据客户细分 - python 数据挖掘
- 关于安装SQLServer2012时遇到1402错误,未能打开注册表项的解决方法
- DOM事件+正则表达式
- 女生宿舍,男生请勿进
- win10便签常驻桌面_做备忘录,用win10自带的便笺工具就可以了,免费又方便
- 基于Robei:环境光传感器实验设计(及L298N模块控制LED灯板)
- 易捷web文件服务器软件,易捷在线文件管理系统