Как переставить 3-х роторный станок
У меня есть код Java для 3-роторной машины. Мне нужно добавить кое-что, что позволяет изменять порядок вращения роторов. Код работает нормально, без проблем расшифровывает и шифрует. Я хочу добавить что-то вроде: setRotorOrder(заказ)
package rotormachines;
import java.util.Scanner;
public class Ecyphir {
/** Creates a new instance of Ecyphir */
public Ecyphir() {
Scanner myin=new Scanner(System.in);
System.out.println("**************** ******************");
for(int i=0;i<26;i++)
{
C1[i][0]=((i+14)%26)+1;
C1[i][1]=((i+6)%26)+1;
C2[i][0]=((i+10)%26)+1;
C2[i][1]=((i+1)%26)+1;
C3[i][0]=((i+4)%26)+1;
C3[i][1]=((i+12)%26)+1;
System.out.println((char)(i+65)+" "+C1[i][0]+" "+C1[i][1]+" | "+C2[i][0]+" "+C2[i][1]+" | "
+C3[i][0]+" "+C3[i][1]+" | "+(char)(i+65));
}
System.out.println("***************** **********************");
System.out.println((char)90);
System.out.println("Plz enter the plain text ");
PlainText=myin.nextLine().toUpperCase();
doEcyphir();
}
public static void main(String[] args) {
// TODO code application logic here
new Ecyphir();
}
public void doEcyphir()
{
int index=0;
int mapindex=0;
char ch;
for(int i=0;i<PlainText.length();i++)
{
index=PlainText.charAt(i);
index-=65;
mapindex=getIndexof(C1,index);
mapindex=getIndexof(C2,mapindex);
mapindex=getIndexof(C3,mapindex);
ch=(char)(mapindex+65);
if(Cyphir==null)
{
Cyphir=Character.toString(ch);
}
else
{
Cyphir+=Character.toString(ch);
}
fastrotor++;
fastcount++;
moveCyl2(C1);
if(fastcount%26==0)
{
fastcount=0;
moveCy1l(C1);
}
if(fastrotor%26==0)
{
moveCyl2(C2);
fastrotor=0;
mediumrotor++;
mediumcount++;
if(mediumcount%26==0)
{
mediumcount=0;
moveCy1l(C2);
}
if(mediumrotor%26==0)
{
moveCyl2(C3);
mediumrotor=0;
slowcount++;
if(slowcount%26==0)
{
slowcount=0;
moveCy1l(C3);
}
}
}
PrintTables();
//https://enigma.dev.java.net/
}
System.out.print("The Cyphir Text is :"+Cyphir);
}
public int getIndexof(int C[][],int row)
{
for(int i=0;i<26;i++)
{
if(C[row][0]==C[i][1])
return i;
}
return -1;
}
public void moveCy1l(int C[][])
{
int temp1=C[0][0];
for(int i=0;i<25;i++)
{
C[i][0]=(C[(i+1)%26][0]);
}
C[25][0]=temp1;
}
public void moveCyl2(int C[][])
{
int temp2=C[0][1];
for(int i=0;i<25;i++)
{
C[i][1]=((C[(i+1)%26][1]));
}
C[25][1]=temp2;
}
public void PrintTables()
{
System.out.println("*********************** ***************");
for(int i=0;i<26;i++)
{
System.out.println((char)(i+65)+" "+C1[i][0]+" "+C1[i][1]+" | "+C2[i][0]+" "+C2[i][1]+" | "
+C3[i][0]+" "+C3[i][1]+" | "+(char)(i+65));
}
System.out.println("*************** ***************");
}
private int C1[][]=new int[26][2];
private int C2[][]=new int[26][2];
private int C3[][]=new int[26][2];
private int fastrotor;
private int mediumrotor;
private int slowrotor;
private int fastcount;
private int mediumcount;
private int slowcount;
private String PlainText;
private String Cyphir;
}