Procházet zdrojové kódy

need to refactor rotate

mpierse před 7 roky
rodič
revize
74452401b9
2 změnil soubory, kde provedl 28 přidání a 6 odebrání
  1. 2
    2
      Crypto/Test/ROT13Test.java
  2. 26
    4
      Crypto/src/ROT13.java

+ 2
- 2
Crypto/Test/ROT13Test.java Zobrazit soubor

14
         // When
14
         // When
15
         ROT13 cipher = new ROT13();
15
         ROT13 cipher = new ROT13();
16
         String actual = cipher.rotate(s1, 'A');
16
         String actual = cipher.rotate(s1, 'A');
17
-
18
         // Then
17
         // Then
19
         assertTrue(actual.equals(s2));
18
         assertTrue(actual.equals(s2));
20
     }
19
     }
28
         // When
27
         // When
29
         ROT13 cipher = new ROT13();
28
         ROT13 cipher = new ROT13();
30
         String actual = cipher.rotate(s1, 'D');
29
         String actual = cipher.rotate(s1, 'D');
30
+        System.out.println(actual);
31
 
31
 
32
         // Then
32
         // Then
33
         assertTrue(actual.equals(s2));
33
         assertTrue(actual.equals(s2));
61
 
61
 
62
         // When
62
         // When
63
         String actual = cipher.encrypt(Q1);
63
         String actual = cipher.encrypt(Q1);
64
-        System.out.println(actual);
64
+        System.out.println(Q1);
65
         System.out.println(A1);
65
         System.out.println(A1);
66
         // Then
66
         // Then
67
         assertTrue(actual.equals(A1));
67
         assertTrue(actual.equals(A1));

+ 26
- 4
Crypto/src/ROT13.java Zobrazit soubor

43
 
43
 
44
     public String decrypt(String text) {
44
     public String decrypt(String text) {
45
         String result = "";
45
         String result = "";
46
-        int temp = 0;
47
         int rotator = cf-cs;
46
         int rotator = cf-cs;
47
+        boolean isUppercase = false;
48
         for(int i=0; i<text.length(); i++){
48
         for(int i=0; i<text.length(); i++){
49
-            temp = (int)text.charAt(i)-rotator;
49
+            isUppercase = Character.isUpperCase(text.charAt(i));
50
+            int temp = Character.toLowerCase(text.charAt(i));
51
+            if (temp<97|temp>122){
52
+            } else if(temp-rotator > 97){
53
+                temp = (int)text.charAt(i)-rotator;
54
+            } else {
55
+                temp = 122 - (96-(temp-rotator));
56
+            }
57
+            if(isUppercase){temp=Character.toUpperCase(temp);}
50
             result+= (char)temp;
58
             result+= (char)temp;
51
         }
59
         }
52
         return result;
60
         return result;
53
     }
61
     }
54
 
62
 
55
     public static String rotate(String s, Character c) {
63
     public static String rotate(String s, Character c) {
56
-
57
-        return "";
64
+        String result = "";
65
+        int rotator = Character.toLowerCase(c)-'a';
66
+        boolean isUppercase = false;
67
+        for(int i=0; i<s.length(); i++){
68
+            isUppercase = Character.isUpperCase(s.charAt(i));
69
+            int temp = Character.toLowerCase(s.charAt(i));
70
+            if (temp<97|temp>122){
71
+            } else if(temp+rotator < 122){
72
+                temp = s.charAt(i)+rotator;
73
+            } else {
74
+                temp = 96 + ((temp+rotator)-122);
75
+            }
76
+            if(isUppercase){temp=Character.toUpperCase(temp);}
77
+            result+= (char)temp;
78
+        }
79
+        return result;
58
     }
80
     }
59
 
81
 
60
 }
82
 }