• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

192166l

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

密码机

准备:

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);
	
	

}
{
	

}
}

这是一个简单的恩尼格码模拟器
恩尼格码机:是德军在二战时期使用的一种密码机,输入文字后就会变成无序乱字母
(假如要是用的话,你加密时输入的密钥要和解密时输入的密钥一致)

posted on 2022-05-13 18:38  dreeeeam2  阅读(204)  评论(1)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3