多表替代的实现
原理
package MiMaXue;
import java.util.Scanner;
public class DuoBiaoTiHuan1{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个分组有几个字母:");
int h=sc.nextInt();
System.out.print("请输入模数:");
int N=sc.nextInt();
System.out.println("请输入密钥矩阵A:");
int[][] A=new int[h][h];
for(int i=0;i<A.length;i++){
for(int j=0;j<A[0].length;j++){
A[i][j]=sc.nextInt();
}
}
System.out.println("请输入密钥矩阵B:");
int[][] B=new int[h][1];
for(int i=0;i<h;i++){
B[i][0]=sc.nextInt();
}
System.out.print("请输入将要加密的字符串:");
String M=sc.next();
char[] M1=M.toCharArray();
int[] M2=new int[M1.length];
for(int i=0;i<M1.length;i++){
M2[i]=M1[i]-'A';
}
int[][] mi=new int[h][1];
int[][] C=new int[M1.length][1];
int n=0;
int m=0;
while(n<M2.length){
for(int i=0;i<h;i++){
mi[i][0]=M2[n++];
}
int[][] D=encryption(mi,A,B,N);
for(int i=0;i<D.length;i++){
C[m++][0]=D[i][0];
}
}
System.out.print("输出加密后的字符串:");
for(int i=0;i<C.length