Untitled
unknown
java
a year ago
3.0 kB
3
Indexable
import java.util.Arrays; import java.util.Random; class chair { public static String encryptRailFence(String text, int key) { char[][] rail = new char[key][text.length()]; for (int i = 0; i < key; i++) Arrays.fill(rail[i], '\n'); boolean dirDown = false; int row = 0, col = 0; for (int i = 0; i < text.length(); i++) { if (row == 0 || row == key - 1) dirDown = !dirDown; rail[row][col++] = text.charAt(i); if (dirDown) row++; else row--; } StringBuilder result = new StringBuilder(); for (int i = 0; i < key; i++) for (int j = 0; j < text.length(); j++) if (rail[i][j] != '\n') result.append(rail[i][j]); return result.toString(); } public static String decryptRailFence(String cipher, int key) { char[][] rail = new char[key][cipher.length()]; for (int i = 0; i < key; i++) Arrays.fill(rail[i], '\n'); boolean dirDown = true; int row = 0, col = 0; for (int i = 0; i < cipher.length(); i++) { if (row == 0) dirDown = true; if (row == key - 1) dirDown = false; rail[row][col++] = '*'; if (dirDown) row++; else row--; } int index = 0; for (int i = 0; i < key; i++) for (int j = 0; j < cipher.length(); j++) if (rail[i][j] == '*' && index < cipher.length()) rail[i][j] = cipher.charAt(index++); StringBuilder result = new StringBuilder(); row = 0; col = 0; for (int i = 0; i < cipher.length(); i++) { if (row == 0) dirDown = true; if (row == key - 1) dirDown = false; if (rail[row][col] != '*') result.append(rail[row][col++]); if (dirDown) row++; else row--; } return result.toString(); } private static String generateRandomString(int l) { Random random = new Random(); StringBuilder randomString = new StringBuilder(); for (int i = 0; i < l; i++) { randomString.append((char) ('A' + random.nextInt(26))); } return randomString.toString(); } public static void main(String[] args) { for (int i = 0; i <= 3; i++) { String txt = generateRandomString(10 + i * 2); System.out.println("Key: " + (i + 2)); System.out.println("Orignal Message: " + txt); String enc = encryptRailFence(txt, i + 2); System.out.println("Encrypted Message: " + enc); System.out.println("Decrypted Message: " + decryptRailFence(enc, i + 2)); System.out.println(); } } }
Editor is loading...