MilaDimitrovaa

ex2

Nov 6th, 2025
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. public class ex2 {
  2. static char[] sTable = {
  3. '3','4','1','2','0','9','7','6','5','8','D','C','F','A','B','E'
  4. };
  5.  
  6. static char[] inverseSTable = new char[16];
  7. static {
  8. char[] hex = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  9. for (int i = 0; i < 16; i++) {
  10. char mapped = sTable[i];
  11. int idx = Character.digit(mapped, 16);
  12. inverseSTable[idx] = hex[i];
  13. }
  14. }
  15.  
  16. public static String encrypt(String block) {
  17. StringBuilder sb = new StringBuilder();
  18. for (char c : block.toCharArray()) {
  19. int index = Character.digit(c, 16);
  20. sb.append(sTable[index]);
  21. }
  22. return sb.toString();
  23. }
  24.  
  25. public static String decrypt(String block) {
  26. StringBuilder sb = new StringBuilder();
  27. for (char c : block.toCharArray()) {
  28. int index = Character.digit(c, 16);
  29. sb.append(inverseSTable[index]);
  30. }
  31. return sb.toString();
  32. }
  33.  
  34. public static void main(String[] args) {
  35. String block = "FA01AD";
  36. String original = block;
  37. System.out.println("Original block: " + block);
  38.  
  39. int count = 0;
  40. do {
  41. block = encrypt(block);
  42. count++;
  43. System.out.println("After " + count + " substitution(s): " + block);
  44. } while (!block.equals(original));
  45.  
  46. System.out.println("\nIt took " + count + " substitutions to return to the original block!");
  47. }
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment