Guest User

Untitled

a guest
Jul 22nd, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5.  
  6. package jr;
  7.  
  8. /**
  9. *
  10. * @author zorael
  11. */
  12. public class Sandbox {
  13. static String letters ="abcdefghijklmnopqrstuvwxyzåäö";
  14.  
  15. public static void main(String[] args) throws java.util.InputMismatchException {
  16. // skapa, initiera Scanner
  17. java.util.Scanner in = new java.util.Scanner(System.in);
  18.  
  19. // skapa, initiera message och key
  20. String message = "";
  21. int key = 0;
  22.  
  23. // skapa boolean som endast blir true om man lyckats med inmatning
  24. boolean successfulInput = false;
  25.  
  26. try {
  27. // inmatning av meddelande och nyckel
  28. System.out.print("Meddelande att encrypta: ");
  29. message = in.nextLine();
  30. System.out.print("Nyckel: ");
  31. key = in.nextInt();
  32.  
  33. // sätt successfulInput till true så att programmet går vidare
  34. successfulInput = true;
  35. } catch (java.util.InputMismatchException e) {
  36. System.out.println("Felinmatat. Skämmes.");
  37. }
  38.  
  39. if (successfulInput) {
  40. // om den kommit så här långt fungerade inmatningen
  41. System.out.println("------------"); // separator
  42.  
  43. // mata ut originalmeddelandet
  44. System.out.println("Message: \"" + message + "\"");
  45.  
  46. // mata ut meddelandet i små bokstäver
  47. String lowercaseMessage = message.toLowerCase();
  48. System.out.println("Lowercase: \"" + lowercaseMessage + "\"");
  49.  
  50. // encrypta och mata ut resultatet
  51. String encryptedMessage = encrypt(lowercaseMessage, key);
  52. System.out.println("Encrypted: \"" + encryptedMessage + "\"");
  53.  
  54. // decrypta och mata ut resultatet
  55. String decryptedMessage = decrypt(lowercaseMessage, key);
  56. System.out.println("Decrypted: \"" + decryptedMessage + "\"");
  57.  
  58. // decrypta det enkrypterade; alltså, "ångra". ska bli samma som
  59. // originalmeddelandet
  60. String decryptedEncryptedMessage = decrypt(encryptedMessage, key);
  61. System.out.println("Decrypted encrypted: \""
  62. + decryptedEncryptedMessage
  63. + "\" (ska vara samma som lowercase message)");
  64. }
  65. }
  66.  
  67. public static String encrypt(String thisMessage, int key) {
  68. // skapa, initiera StringBuilder att lägga till färdiga bokstäver i
  69. StringBuilder encryptedMessage = new StringBuilder();
  70.  
  71. // iterera genom alla bokstäver i thisMessage
  72. for (int index = 0; index < thisMessage.length(); index++) {
  73. // välj ut nuvarande bokstav (för index), sätt som thisLetter
  74. char thisLetter = thisMessage.charAt(index);
  75. // åberopa shift på den bokstaven för att encrypta
  76. char encryptedLetter = shift(thisLetter, key);
  77. // lägg till encryptedLetter i StringBuildern
  78. encryptedMessage.append(encryptedLetter);
  79. }
  80. // returnera som String
  81. return encryptedMessage.toString();
  82. }
  83.  
  84. public static char shift(char thisChar, int key) {
  85. // hitta index för thisChar i letters, sätt som letterIndex
  86. int letterIndex = letters.indexOf(thisChar);
  87.  
  88. // indexOf ger -1 om thisChar inte finns i letter, returnera isf
  89. // direkt den givna bokstaven (såsom uppgiften vill)
  90. if (letterIndex == -1) {
  91. return thisChar;
  92. }
  93.  
  94. // bumpa letterIndex med given key
  95. letterIndex += key;
  96. // motsvarar som sagt letterIndex = letterIndex + key
  97.  
  98. /* om nya letterIndex faller utanför de index letters har,
  99. * subtrahera med letters.length() för att "varva" så ö blir a om key 1
  100. * vidare, första index av letters är 0, men length() ger längd
  101. * såsom om första är 1, så subtrahera length() med 1
  102. */
  103. if (letterIndex > (letters.length() - 1))
  104. letterIndex -= letters.length();
  105. // på samma sätt, om negativt så addera med letters.length()
  106. else if (letterIndex < 0)
  107. letterIndex += letters.length();
  108.  
  109. // returnera chiffrerad bokstav
  110. return letters.charAt(letterIndex);
  111. }
  112.  
  113. public static String decrypt(String thisMessage, int key) {
  114. // när man dekrypterar ska key vara negativ (shiftBackwards)
  115. key = 0 - key;
  116.  
  117. // skapa, initiera StringBuilder att lägga till färdiga bokstäver i
  118. StringBuilder decryptedMessage = new StringBuilder();
  119.  
  120. // iterera genom alla bokstäver i thisMessage
  121. for (int index = 0; index < thisMessage.length(); index++) {
  122. // välj ut nuvarande bokstav (för index), sätt som thisLetter
  123. char thisLetter = thisMessage.charAt(index);
  124. // åberopa shift på den bokstaven för att decrypta
  125. char decryptedLetter = shift(thisLetter, key);
  126. // lägg till decryptedLetter i StringBuildern
  127. decryptedMessage.append(decryptedLetter);
  128. }
  129. // returnera som String
  130. return decryptedMessage.toString();
  131. }
  132. }
Add Comment
Please, Sign In to add comment