Есть исходный код программы "шифр одиночной перестановки по ключу", а мне нужно программа "шифр двойной перестановки". Помогите идеями или вариантами программ Код | /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package pelikan; /** * * @author Student */ public class Pelikan { /** * @param args the command line arguments */ public static void main(String[] args) { int verticle = 5; int horizontal = 7; String keyWord = "ПЕЛИКАН"; String word = "ТЕРМИНАТОРПРИБЫВАЕТСЕДЬМОГОВПОЛНОЧЬ"; StringBuilder instKey = new StringBuilder(keyWord); StringBuilder instSentance = new StringBuilder(word); //Массив для ключевого слова. char[] key = new char[instKey.length()]; //Массив для незашифрованого послания. char[][] table = new char[verticle][horizontal]; char[][] newTable = new char[horizontal][verticle]; for (int i = 0, ii = 0; i < horizontal; i++) { for (int j = 0; j < verticle; j++) { table[j][i] = instSentance.charAt(ii); ii++; } } for (int i = 0; i < instKey.length(); i++) { key[i] = instKey.charAt(i); } for (int i = 0; i < key.length; i++) { int min = (int) key[i]; int imin = i; for (int j = i + 1; j < key.length; j++) { if ((int) key[j] < min) { min = (int) key[j]; imin = j; } } if (i != imin) { int temp = (int) key[i]; key[i] = (char) key[imin]; key[imin] = (char) temp; } } for (int i = 0; i < key.length; i++) { System.out.print(key[i]); } System.out.println(); for (int j = 0; j < instKey.length(); j++) { for (int y = 0; y < instKey.length(); y++) { if ((int) key[j] == (int) instKey.charAtyes) { for (int i = 0; i < verticle; i++) { newTable[j][i] = table[i][y]; } } } } for (int i = 0; i < verticle; i++) { for (int j = 0; j < horizontal; j++) { System.out.print(newTable[j][i]); } System.out.println(); } System.out.println(); for (int i = 0; i < verticle; i++) { for (int j = 0; j < horizontal; j++) { System.out.print(newTable[j][i]); } } } }
|
|