密码机
准备:
eclipse编辑器
一个库java.util.Scanner(导入方法上期讲过)
开始
import java.util.Scanner;
public class 恩尼格码机 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("[A 加密][J 解密],请选择一个");
Scanner c=new Scanner(System.in);// 创建Scanner对象
String s1=c.nextLine();//获取本行的字符串
if(s1.equalsIgnoreCase("A")) {//判断变量s1与A是否相等,忽略大小
System.out.println("请输入明文:");
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println("请输入密钥:");
Scanner sc1=new Scanner(System.in);
int key=sc1.nextInt();//将
Encryption(s,key);//调用Encryption方法
}else if(s1.equalsIgnoreCase("J")) {
System.out.println("请输入密文:");
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println("请输入密钥:");
Scanner sc1=new Scanner(System.in);
int key=sc1.nextInt();
Decrypt(s,key);//调用Encryption方法
}
}
public static void Decrypt(String str, int n) {
// TODO Auto-generated method stub
//解密
int k=Integer.parseInt("-"+n);
String string="";
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
if(c>='a'&&c<='z')//如果字符串中的某个字符是小写字母
{
c+=k%26;//移动key%26位
if(c<'a')
c+=26;//向左超界
if(c>'z')
c-=26;//向右超界
}else if(c>='A'&&c<='Z')//如果字符串中的某个字符是大写字母
{
c+=k%26;//移动key%26位
if(c<'A')
c+=26;//向左超界
if(c>'Z')
c-=26;//向右超界
}
string +=c;//将解密后的字符连成字符串
}
System.out.println(str+"解密后为:"+string);
}
public static void Encryption(String str, int k) {
// TODO Auto-generated method stub
//加密
String string="";
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
if(c>='a'&&c<='z')//如果字符串中的某个字符是小写字母
{
c+=k%26;//移动key%26位
if(c<'a')
c+=26;//向左超界
if(c>'z')
c-=26;//向右超界
}else if(c>='A'&&c<='Z')//如果字符串中的某个字符是大写字母
{
c+=k%26;//移动key%26位
if(c<'A')
c+=26;//向左超界
if(c>'Z')
c-=26;//向右超界
}
string +=c;//将解密后的字符连成字符串
}
System.out.println(str+"加密后为:"+string);
}
{
}
}
这是一个简单的恩尼格码模拟器
恩尼格码机:是德军在二战时期使用的一种密码机,输入文字后就会变成无序乱字母
(假如要是用的话,你加密时输入的密钥要和解密时输入的密钥一致)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步