import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class zhihuan {
public static void main(String args[]) throws IOException{
System.out.println(\"请您输入需要的服务,1为加密,2为解密\");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int Choice=Integer.parseInt(br.readLine());
if(Choice==1)
{
System.out.println(\"您进入了加密程序\");
System.out.print(\"请输入您需要加密的明文:\");
String MingWen=br.readLine();
System.out.print(\"请输入加密秘钥:\");
String key=br.readLine();
jiami(MingWen,key);
Choice=2;
}
if(Choice==2)
{
System.out.println(\"您进入了解密程序\");
System.out.print(\"请输入您需要解密的密文:\");
String MiWen=br.readLine();
System.out.print(\"请输入解密秘钥:\");
String key2=br.readLine();
jiemi(MiWen,key2);
System.exit(0);
}
else
{
System.out.println(\"输入错误,请重新输入,1为加密,2为解密:\\n\");
System.exit(0);
}
}
static void jiami(String mingwen,String key)
{
int hang=(int)Math.ceil((double)mingwen.length()/(double)key.length());//行数
int lie=key.length();//列数
char[][] juzhen=new char[hang][lie];//定义矩阵存储明文
int temp=0;
for(int i=0;i for(int j=0;j if(temp temp++;} } } int[] key_xu=new int[key.length()];//此数组存储秘钥字母顺序 for(int i=0;i key_xu[i]=(int)key.charAt(i); } Arrays.sort(key_xu); //对秘钥ASCII码进行排序 int[] a=new int[key.length()];//此数组用于记录转换映射 for(int i=0;i if( (int)key.charAt(i)==key_xu[j]) { a[i]=j; } } char[][] mima=new char[hang][lie];//定义第一次转置后的密码矩阵 for(int j=0;j mima[i][j]=juzhen[i][a[j]]; } System.out.print(\"加密后密码:\"); for(int j=0;j for(int i=0;i System.out.print(mima[i][a[j]]); } } } static void jiemi(String miwen,String key) { int hang=(int)Math.ceil((double)miwen.length()/(double)key.length());// int lie=key.length();// char[][] juzhen=new char[hang][lie]; int temp=0; for(int j=0;j for(int i=0;i if(temp temp++;} } } int[] key_xu=new int[key.length()];//此数组存储秘钥字母顺序 for(int i=0;i key_xu[i]=(int)key.charAt(i); } Arrays.sort(key_xu); //对秘钥ASCII码进行排序 int[] a=new int[key.length()];//此数组用于记录转换映射 for(int i=0;i if( (int)key.charAt(i)==key_xu[j]) { a[i]=j; } } char[][] ming=new char[hang][lie];//定义第一次转置后的密码矩阵 for(int j=0;j ming[i][a[j]]=juzhen[i][j]; } char[][] mingwen=new char[hang][lie]; for(int j=0;j mingwen[i][a[j]]=ming[i][j]; } System.out.println(\"解密结果为:\"); for(int i=0;i for(int j=0;j System.out.print(mingwen[i][j]); } } } } 因篇幅问题不能全部显示,请点此查看更多更全内容