Advertisement
ibragimova_mariam

new Вижинер

Dec 1st, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Vigenere {
  4.  
  5. private static final String characters = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
  6. private static final int N = characters.length();
  7.  
  8. private static String encode(String input, String keyword)
  9. {
  10. char[] data = input.toUpperCase().toCharArray();
  11. char[] key = keyword.toUpperCase().toCharArray();
  12.  
  13. String result = "";
  14. int key_pos = 0;
  15. for (int i = 0; i < data.length; i++)
  16. {
  17. if (data[i] == ' ')
  18. {
  19. result += " ";
  20. continue;
  21. }
  22.  
  23. int p = (characters.indexOf(data[i]) +
  24. characters.indexOf(key[key_pos % key.length])) % N;
  25.  
  26. key_pos++;
  27. result += characters.charAt(p);
  28. }
  29.  
  30. return result;
  31. }
  32.  
  33. private static String decode(String input, String keyword)
  34. {
  35. char[] data = input.toUpperCase().toCharArray();
  36. char[] key = keyword.toUpperCase().toCharArray();
  37.  
  38. String result = "";
  39. int key_pos = 0;
  40. for (int i = 0; i < data.length; i++)
  41. {
  42. if (data[i] == ' ')
  43. {
  44. result += " ";
  45. continue;
  46. }
  47.  
  48. int p = (characters.indexOf(data[i]) + N -
  49. characters.indexOf(key[key_pos % key.length])) % N;
  50.  
  51. key_pos++;
  52. result += characters.charAt(p);
  53. }
  54.  
  55. return result;
  56. }
  57.  
  58. public static void main(String []args)
  59. {
  60. Scanner in = new Scanner(System.in);
  61. String input, key;
  62.  
  63. while (true)
  64. {
  65. System.out.println("Введите текст для шифрования: ");
  66. input = in.nextLine();
  67.  
  68. System.out.println("Введите ключ: ");
  69. key = in.nextLine();
  70.  
  71. String cipher = encode(input, key);
  72. System.out.println("Зашифрованный текст: " + cipher);
  73. System.out.println("Расшифровка: " + decode(cipher, key));
  74.  
  75. System.out.println("Продолжить [д/н]? ");
  76.  
  77. if(in.nextLine().equalsIgnoreCase("н"))
  78. break;
  79. }
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement