8
8
public class DES {
9
9
10
10
private String key ;
11
- private String [] subKeys ;
11
+ private final String [] subKeys ;
12
12
13
13
private void sanitize (String key ) {
14
14
int length = key .length ();
@@ -32,55 +32,57 @@ public void setKey(String key) {
32
32
this .key = key ;
33
33
}
34
34
35
- // Permutation table to convert initial 64 bit key to 56 bit key
36
- private static int [] PC1 = {57 , 49 , 41 , 33 , 25 , 17 , 9 , 1 , 58 , 50 , 42 , 34 , 26 , 18 , 10 , 2 , 59 , 51 , 43 , 35 , 27 , 19 , 11 , 3 , 60 , 52 , 44 , 36 , 63 , 55 , 47 , 39 , 31 , 23 , 15 , 7 , 62 , 54 , 46 , 38 , 30 , 22 , 14 , 6 , 61 , 53 , 45 , 37 , 29 , 21 , 13 , 5 , 28 , 20 , 12 , 4 };
35
+ // Permutation table to convert initial 64- bit key to 56 bit key
36
+ private static final int [] PC1 = {57 , 49 , 41 , 33 , 25 , 17 , 9 , 1 , 58 , 50 , 42 , 34 , 26 , 18 , 10 , 2 , 59 , 51 , 43 , 35 , 27 , 19 , 11 , 3 , 60 , 52 , 44 , 36 , 63 , 55 , 47 , 39 , 31 , 23 , 15 , 7 , 62 , 54 , 46 , 38 , 30 , 22 , 14 , 6 , 61 , 53 , 45 , 37 , 29 , 21 , 13 , 5 , 28 , 20 , 12 , 4 };
37
37
38
38
// Lookup table used to shift the initial key, in order to generate the subkeys
39
- private static int [] KEY_SHIFTS = {1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1 };
39
+ private static final int [] KEY_SHIFTS = {1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1 };
40
40
41
41
// Table to convert the 56 bit subkeys to 48 bit subkeys
42
- private static int [] PC2 = {14 , 17 , 11 , 24 , 1 , 5 , 3 , 28 , 15 , 6 , 21 , 10 , 23 , 19 , 12 , 4 , 26 , 8 , 16 , 7 , 27 , 20 , 13 , 2 , 41 , 52 , 31 , 37 , 47 , 55 , 30 , 40 , 51 , 45 , 33 , 48 , 44 , 49 , 39 , 56 , 34 , 53 , 46 , 42 , 50 , 36 , 29 , 32 };
42
+ private static final int [] PC2 = {14 , 17 , 11 , 24 , 1 , 5 , 3 , 28 , 15 , 6 , 21 , 10 , 23 , 19 , 12 , 4 , 26 , 8 , 16 , 7 , 27 , 20 , 13 , 2 , 41 , 52 , 31 , 37 , 47 , 55 , 30 , 40 , 51 , 45 , 33 , 48 , 44 , 49 , 39 , 56 , 34 , 53 , 46 , 42 , 50 , 36 , 29 , 32 };
43
43
44
- // Initial permutatation of each 64 but message block
45
- private static int [] IP = {58 , 50 , 42 , 34 , 26 , 18 , 10 , 2 , 60 , 52 , 44 , 36 , 28 , 20 , 12 , 4 , 62 , 54 , 46 , 38 , 30 , 22 , 14 , 6 , 64 , 56 , 48 , 40 , 32 , 24 , 16 , 8 , 57 , 49 , 41 , 33 , 25 , 17 , 9 , 1 , 59 , 51 , 43 , 35 , 27 , 19 , 11 , 3 , 61 , 53 , 45 , 37 , 29 , 21 , 13 , 5 , 63 , 55 , 47 , 39 , 31 , 23 , 15 , 7 };
44
+ // Initial permutation of each 64 but message block
45
+ private static final int [] IP = {58 , 50 , 42 , 34 , 26 , 18 , 10 , 2 , 60 , 52 , 44 , 36 , 28 , 20 , 12 , 4 , 62 , 54 , 46 , 38 , 30 , 22 , 14 , 6 , 64 , 56 , 48 , 40 , 32 , 24 , 16 , 8 , 57 , 49 , 41 , 33 , 25 , 17 , 9 , 1 , 59 , 51 , 43 , 35 , 27 , 19 , 11 , 3 , 61 , 53 , 45 , 37 , 29 , 21 , 13 , 5 , 63 , 55 , 47 , 39 , 31 , 23 , 15 , 7 };
46
46
47
47
// Expansion table to convert right half of message blocks from 32 bits to 48 bits
48
- private static int [] expansion = {32 , 1 , 2 , 3 , 4 , 5 , 4 , 5 , 6 , 7 , 8 , 9 , 8 , 9 , 10 , 11 , 12 , 13 , 12 , 13 , 14 , 15 , 16 , 17 , 16 , 17 , 18 , 19 , 20 , 21 , 20 , 21 , 22 , 23 , 24 , 25 , 24 , 25 , 26 , 27 , 28 , 29 , 28 , 29 , 30 , 31 , 32 , 1 };
48
+ private static final int [] EXPANSION = {32 , 1 , 2 , 3 , 4 , 5 , 4 , 5 , 6 , 7 , 8 , 9 , 8 , 9 , 10 , 11 , 12 , 13 , 12 , 13 , 14 , 15 , 16 , 17 , 16 , 17 , 18 , 19 , 20 , 21 , 20 , 21 , 22 , 23 , 24 , 25 , 24 , 25 , 26 , 27 , 28 , 29 , 28 , 29 , 30 , 31 , 32 , 1 };
49
49
50
50
// The eight substitution boxes are defined below
51
- private static int [][] s1 = {{14 , 4 , 13 , 1 , 2 , 15 , 11 , 8 , 3 , 10 , 6 , 12 , 5 , 9 , 0 , 7 }, {0 , 15 , 7 , 4 , 14 , 2 , 13 , 1 , 10 , 6 , 12 , 11 , 9 , 5 , 3 , 8 }, {4 , 1 , 14 , 8 , 13 , 6 , 2 , 11 , 15 , 12 , 9 , 7 , 3 , 10 , 5 , 0 }, {15 , 12 , 8 , 2 , 4 , 9 , 1 , 7 , 5 , 11 , 3 , 14 , 10 , 0 , 6 , 13 }};
51
+ private static final int [][] S1 = {{14 , 4 , 13 , 1 , 2 , 15 , 11 , 8 , 3 , 10 , 6 , 12 , 5 , 9 , 0 , 7 }, {0 , 15 , 7 , 4 , 14 , 2 , 13 , 1 , 10 , 6 , 12 , 11 , 9 , 5 , 3 , 8 }, {4 , 1 , 14 , 8 , 13 , 6 , 2 , 11 , 15 , 12 , 9 , 7 , 3 , 10 , 5 , 0 }, {15 , 12 , 8 , 2 , 4 , 9 , 1 , 7 , 5 , 11 , 3 , 14 , 10 , 0 , 6 , 13 }};
52
52
53
- private static int [][] s2 = {{15 , 1 , 8 , 14 , 6 , 11 , 3 , 4 , 9 , 7 , 2 , 13 , 12 , 0 , 5 , 10 }, {3 , 13 , 4 , 7 , 15 , 2 , 8 , 14 , 12 , 0 , 1 , 10 , 6 , 9 , 11 , 5 }, {0 , 14 , 7 , 11 , 10 , 4 , 13 , 1 , 5 , 8 , 12 , 6 , 9 , 3 , 2 , 15 }, {13 , 8 , 10 , 1 , 3 , 15 , 4 , 2 , 11 , 6 , 7 , 12 , 0 , 5 , 14 , 9 }};
53
+ private static final int [][] S2 = {{15 , 1 , 8 , 14 , 6 , 11 , 3 , 4 , 9 , 7 , 2 , 13 , 12 , 0 , 5 , 10 }, {3 , 13 , 4 , 7 , 15 , 2 , 8 , 14 , 12 , 0 , 1 , 10 , 6 , 9 , 11 , 5 }, {0 , 14 , 7 , 11 , 10 , 4 , 13 , 1 , 5 , 8 , 12 , 6 , 9 , 3 , 2 , 15 }, {13 , 8 , 10 , 1 , 3 , 15 , 4 , 2 , 11 , 6 , 7 , 12 , 0 , 5 , 14 , 9 }};
54
54
55
- private static int [][] s3 = {{10 , 0 , 9 , 14 , 6 , 3 , 15 , 5 , 1 , 13 , 12 , 7 , 11 , 4 , 2 , 8 }, {13 , 7 , 0 , 9 , 3 , 4 , 6 , 10 , 2 , 8 , 5 , 14 , 12 , 11 , 15 , 1 }, {13 , 6 , 4 , 9 , 8 , 15 , 3 , 0 , 11 , 1 , 2 , 12 , 5 , 10 , 14 , 7 }, {1 , 10 , 13 , 0 , 6 , 9 , 8 , 7 , 4 , 15 , 14 , 3 , 11 , 5 , 2 , 12 }};
55
+ private static final int [][] S3 = {{10 , 0 , 9 , 14 , 6 , 3 , 15 , 5 , 1 , 13 , 12 , 7 , 11 , 4 , 2 , 8 }, {13 , 7 , 0 , 9 , 3 , 4 , 6 , 10 , 2 , 8 , 5 , 14 , 12 , 11 , 15 , 1 }, {13 , 6 , 4 , 9 , 8 , 15 , 3 , 0 , 11 , 1 , 2 , 12 , 5 , 10 , 14 , 7 }, {1 , 10 , 13 , 0 , 6 , 9 , 8 , 7 , 4 , 15 , 14 , 3 , 11 , 5 , 2 , 12 }};
56
56
57
- private static int [][] s4 = {{7 , 13 , 14 , 3 , 0 , 6 , 9 , 10 , 1 , 2 , 8 , 5 , 11 , 12 , 4 , 15 }, {13 , 8 , 11 , 5 , 6 , 15 , 0 , 3 , 4 , 7 , 2 , 12 , 1 , 10 , 14 , 9 }, {10 , 6 , 9 , 0 , 12 , 11 , 7 , 13 , 15 , 1 , 3 , 14 , 5 , 2 , 8 , 4 }, {3 , 15 , 0 , 6 , 10 , 1 , 13 , 8 , 9 , 4 , 5 , 11 , 12 , 7 , 2 , 14 }};
57
+ private static final int [][] S4 = {{7 , 13 , 14 , 3 , 0 , 6 , 9 , 10 , 1 , 2 , 8 , 5 , 11 , 12 , 4 , 15 }, {13 , 8 , 11 , 5 , 6 , 15 , 0 , 3 , 4 , 7 , 2 , 12 , 1 , 10 , 14 , 9 }, {10 , 6 , 9 , 0 , 12 , 11 , 7 , 13 , 15 , 1 , 3 , 14 , 5 , 2 , 8 , 4 }, {3 , 15 , 0 , 6 , 10 , 1 , 13 , 8 , 9 , 4 , 5 , 11 , 12 , 7 , 2 , 14 }};
58
58
59
- private static int [][] s5 = {{2 , 12 , 4 , 1 , 7 , 10 , 11 , 6 , 8 , 5 , 3 , 15 , 13 , 0 , 14 , 9 }, {14 , 11 , 2 , 12 , 4 , 7 , 13 , 1 , 5 , 0 , 15 , 10 , 3 , 9 , 8 , 6 }, {4 , 2 , 1 , 11 , 10 , 13 , 7 , 8 , 15 , 9 , 12 , 5 , 6 , 3 , 0 , 14 }, {11 , 8 , 12 , 7 , 1 , 14 , 2 , 13 , 6 , 15 , 0 , 9 , 10 , 4 , 5 , 3 }};
59
+ private static final int [][] S5 = {{2 , 12 , 4 , 1 , 7 , 10 , 11 , 6 , 8 , 5 , 3 , 15 , 13 , 0 , 14 , 9 }, {14 , 11 , 2 , 12 , 4 , 7 , 13 , 1 , 5 , 0 , 15 , 10 , 3 , 9 , 8 , 6 }, {4 , 2 , 1 , 11 , 10 , 13 , 7 , 8 , 15 , 9 , 12 , 5 , 6 , 3 , 0 , 14 }, {11 , 8 , 12 , 7 , 1 , 14 , 2 , 13 , 6 , 15 , 0 , 9 , 10 , 4 , 5 , 3 }};
60
60
61
- private static int [][] s6 = {{12 , 1 , 10 , 15 , 9 , 2 , 6 , 8 , 0 , 13 , 3 , 4 , 14 , 7 , 5 , 11 }, {10 , 15 , 4 , 2 , 7 , 12 , 9 , 5 , 6 , 1 , 13 , 14 , 0 , 11 , 3 , 8 }, {9 , 14 , 15 , 5 , 2 , 8 , 12 , 3 , 7 , 0 , 4 , 10 , 1 , 13 , 11 , 6 }, {4 , 3 , 2 , 12 , 9 , 5 , 15 , 10 , 11 , 14 , 1 , 7 , 6 , 0 , 8 , 13 }};
61
+ private static final int [][] S6 = {{12 , 1 , 10 , 15 , 9 , 2 , 6 , 8 , 0 , 13 , 3 , 4 , 14 , 7 , 5 , 11 }, {10 , 15 , 4 , 2 , 7 , 12 , 9 , 5 , 6 , 1 , 13 , 14 , 0 , 11 , 3 , 8 }, {9 , 14 , 15 , 5 , 2 , 8 , 12 , 3 , 7 , 0 , 4 , 10 , 1 , 13 , 11 , 6 }, {4 , 3 , 2 , 12 , 9 , 5 , 15 , 10 , 11 , 14 , 1 , 7 , 6 , 0 , 8 , 13 }};
62
62
63
- private static int [][] s7 = {{4 , 11 , 2 , 14 , 15 , 0 , 8 , 13 , 3 , 12 , 9 , 7 , 5 , 10 , 6 , 1 }, {13 , 0 , 11 , 7 , 4 , 9 , 1 , 10 , 14 , 3 , 5 , 12 , 2 , 15 , 8 , 6 }, {1 , 4 , 11 , 13 , 12 , 3 , 7 , 14 , 10 , 15 , 6 , 8 , 0 , 5 , 9 , 2 }, {6 , 11 , 13 , 8 , 1 , 4 , 10 , 7 , 9 , 5 , 0 , 15 , 14 , 2 , 3 , 12 }};
63
+ private static final int [][] S7 = {{4 , 11 , 2 , 14 , 15 , 0 , 8 , 13 , 3 , 12 , 9 , 7 , 5 , 10 , 6 , 1 }, {13 , 0 , 11 , 7 , 4 , 9 , 1 , 10 , 14 , 3 , 5 , 12 , 2 , 15 , 8 , 6 }, {1 , 4 , 11 , 13 , 12 , 3 , 7 , 14 , 10 , 15 , 6 , 8 , 0 , 5 , 9 , 2 }, {6 , 11 , 13 , 8 , 1 , 4 , 10 , 7 , 9 , 5 , 0 , 15 , 14 , 2 , 3 , 12 }};
64
64
65
- private static int [][] s8 = {{13 , 2 , 8 , 4 , 6 , 15 , 11 , 1 , 10 , 9 , 3 , 14 , 5 , 0 , 12 , 7 }, {1 , 15 , 13 , 8 , 10 , 3 , 7 , 4 , 12 , 5 , 6 , 11 , 0 , 14 , 9 , 2 }, {7 , 11 , 4 , 1 , 9 , 12 , 14 , 2 , 0 , 6 , 10 , 13 , 15 , 3 , 5 , 8 }, {2 , 1 , 14 , 7 , 4 , 10 , 8 , 13 , 15 , 12 , 9 , 0 , 3 , 5 , 6 , 11 }};
65
+ private static final int [][] S8 = {{13 , 2 , 8 , 4 , 6 , 15 , 11 , 1 , 10 , 9 , 3 , 14 , 5 , 0 , 12 , 7 }, {1 , 15 , 13 , 8 , 10 , 3 , 7 , 4 , 12 , 5 , 6 , 11 , 0 , 14 , 9 , 2 }, {7 , 11 , 4 , 1 , 9 , 12 , 14 , 2 , 0 , 6 , 10 , 13 , 15 , 3 , 5 , 8 }, {2 , 1 , 14 , 7 , 4 , 10 , 8 , 13 , 15 , 12 , 9 , 0 , 3 , 5 , 6 , 11 }};
66
66
67
- private static int [][][] s = {s1 , s2 , s3 , s4 , s5 , s6 , s7 , s8 };
67
+ private static final int [][][] S = {S1 , S2 , S3 , S4 , S5 , S6 , S7 , S8 };
68
68
69
- // Permutation table, used in the feistel function post s-box usage
70
- static int [] permutation = {16 , 7 , 20 , 21 , 29 , 12 , 28 , 17 , 1 , 15 , 23 , 26 , 5 , 18 , 31 , 10 , 2 , 8 , 24 , 14 , 32 , 27 , 3 , 9 , 19 , 13 , 30 , 6 , 22 , 11 , 4 , 25 };
69
+ // Permutation table, used in the Feistel function post s-box usage
70
+ static final int [] PERMUTATION = {16 , 7 , 20 , 21 , 29 , 12 , 28 , 17 , 1 , 15 , 23 , 26 , 5 , 18 , 31 , 10 , 2 , 8 , 24 , 14 , 32 , 27 , 3 , 9 , 19 , 13 , 30 , 6 , 22 , 11 , 4 , 25 };
71
71
72
72
// Table used for final inversion of the message box after 16 rounds of Feistel Function
73
- static int [] IPinverse = {40 , 8 , 48 , 16 , 56 , 24 , 64 , 32 , 39 , 7 , 47 , 15 , 55 , 23 , 63 , 31 , 38 , 6 , 46 , 14 , 54 , 22 , 62 , 30 , 37 , 5 , 45 , 13 , 53 , 21 , 61 , 29 , 36 , 4 , 44 , 12 , 52 , 20 , 60 , 28 , 35 , 3 , 43 , 11 , 51 , 19 , 59 , 27 , 34 , 2 , 42 , 10 , 50 , 18 , 58 , 26 , 33 , 1 , 41 , 9 , 49 , 17 , 57 , 25 };
73
+ static final int [] IP_INVERSE = {40 , 8 , 48 , 16 , 56 , 24 , 64 , 32 , 39 , 7 , 47 , 15 , 55 , 23 , 63 , 31 , 38 , 6 , 46 , 14 , 54 , 22 , 62 , 30 , 37 , 5 , 45 , 13 , 53 , 21 , 61 , 29 , 36 , 4 , 44 , 12 , 52 , 20 , 60 , 28 , 35 , 3 , 43 , 11 , 51 , 19 , 59 , 27 , 34 , 2 , 42 , 10 , 50 , 18 , 58 , 26 , 33 , 1 , 41 , 9 , 49 , 17 , 57 , 25 };
74
74
75
75
private String [] getSubkeys (String originalKey ) {
76
- StringBuilder permutedKey = new StringBuilder (); // Initial permutation of keys via PC1
77
- int i , j ;
76
+ StringBuilder permutedKey = new StringBuilder (); // Initial permutation of keys via pc1
77
+ int i ;
78
+ int j ;
78
79
for (i = 0 ; i < 56 ; i ++) {
79
80
permutedKey .append (originalKey .charAt (PC1 [i ] - 1 ));
80
81
}
81
82
String [] subKeys = new String [16 ];
82
83
String initialPermutedKey = permutedKey .toString ();
83
- String C0 = initialPermutedKey .substring (0 , 28 ), D0 = initialPermutedKey .substring (28 );
84
+ String C0 = initialPermutedKey .substring (0 , 28 );
85
+ String D0 = initialPermutedKey .substring (28 );
84
86
85
87
// We will now operate on the left and right halves of the permutedKey
86
88
for (i = 0 ; i < 16 ; i ++) {
@@ -91,7 +93,7 @@ private String[] getSubkeys(String originalKey) {
91
93
D0 = Dn ;
92
94
}
93
95
94
- // Let us shrink the keys to 48 bits (well, characters here) using PC2
96
+ // Let us shrink the keys to 48 bits (well, characters here) using pc2
95
97
for (i = 0 ; i < 16 ; i ++) {
96
98
String key = subKeys [i ];
97
99
permutedKey .setLength (0 );
@@ -105,7 +107,8 @@ private String[] getSubkeys(String originalKey) {
105
107
}
106
108
107
109
private String XOR (String a , String b ) {
108
- int i , l = a .length ();
110
+ int i ;
111
+ int l = a .length ();
109
112
StringBuilder xor = new StringBuilder ();
110
113
for (i = 0 ; i < l ; i ++) {
111
114
int firstBit = a .charAt (i ) - 48 ; // 48 is '0' in ascii
@@ -116,7 +119,8 @@ private String XOR(String a, String b) {
116
119
}
117
120
118
121
private String createPaddedString (String s , int desiredLength , char pad ) {
119
- int i , l = s .length ();
122
+ int i ;
123
+ int l = s .length ();
120
124
StringBuilder paddedString = new StringBuilder ();
121
125
int diff = desiredLength - l ;
122
126
for (i = 0 ; i < diff ; i ++) {
@@ -137,7 +141,7 @@ private String feistel(String messageBlock, String key) {
137
141
int i ;
138
142
StringBuilder expandedKey = new StringBuilder ();
139
143
for (i = 0 ; i < 48 ; i ++) {
140
- expandedKey .append (messageBlock .charAt (expansion [i ] - 1 ));
144
+ expandedKey .append (messageBlock .charAt (EXPANSION [i ] - 1 ));
141
145
}
142
146
String mixedKey = XOR (expandedKey .toString (), key );
143
147
StringBuilder substitutedString = new StringBuilder ();
@@ -147,13 +151,13 @@ private String feistel(String messageBlock, String key) {
147
151
String block = mixedKey .substring (i , i + 6 );
148
152
int row = (block .charAt (0 ) - 48 ) * 2 + (block .charAt (5 ) - 48 );
149
153
int col = (block .charAt (1 ) - 48 ) * 8 + (block .charAt (2 ) - 48 ) * 4 + (block .charAt (3 ) - 48 ) * 2 + (block .charAt (4 ) - 48 );
150
- String substitutedBlock = pad (Integer .toBinaryString (s [i / 6 ][row ][col ]), 4 );
154
+ String substitutedBlock = pad (Integer .toBinaryString (S [i / 6 ][row ][col ]), 4 );
151
155
substitutedString .append (substitutedBlock );
152
156
}
153
157
154
158
StringBuilder permutedString = new StringBuilder ();
155
159
for (i = 0 ; i < 32 ; i ++) {
156
- permutedString .append (substitutedString .charAt (permutation [i ] - 1 ));
160
+ permutedString .append (substitutedString .charAt (PERMUTATION [i ] - 1 ));
157
161
}
158
162
159
163
return permutedString .toString ();
@@ -165,7 +169,8 @@ private String encryptBlock(String message, String[] keys) {
165
169
for (i = 0 ; i < 64 ; i ++) {
166
170
permutedMessage .append (message .charAt (IP [i ] - 1 ));
167
171
}
168
- String L0 = permutedMessage .substring (0 , 32 ), R0 = permutedMessage .substring (32 );
172
+ String L0 = permutedMessage .substring (0 , 32 );
173
+ String R0 = permutedMessage .substring (32 );
169
174
170
175
// Iterate 16 times
171
176
for (i = 0 ; i < 16 ; i ++) {
@@ -178,7 +183,7 @@ private String encryptBlock(String message, String[] keys) {
178
183
String combinedBlock = R0 + L0 ; // Reverse the 16th block
179
184
permutedMessage .setLength (0 );
180
185
for (i = 0 ; i < 64 ; i ++) {
181
- permutedMessage .append (combinedBlock .charAt (IPinverse [i ] - 1 ));
186
+ permutedMessage .append (combinedBlock .charAt (IP_INVERSE [i ] - 1 ));
182
187
}
183
188
return permutedMessage .toString ();
184
189
}
@@ -198,7 +203,9 @@ private String decryptBlock(String message, String[] keys) {
198
203
*/
199
204
public String encrypt (String message ) {
200
205
StringBuilder encryptedMessage = new StringBuilder ();
201
- int l = message .length (), i , j ;
206
+ int l = message .length ();
207
+ int i ;
208
+ int j ;
202
209
if (l % 8 != 0 ) {
203
210
int desiredLength = (l / 8 + 1 ) * 8 ;
204
211
l = desiredLength ;
@@ -223,7 +230,9 @@ public String encrypt(String message) {
223
230
*/
224
231
public String decrypt (String message ) {
225
232
StringBuilder decryptedMessage = new StringBuilder ();
226
- int l = message .length (), i , j ;
233
+ int l = message .length ();
234
+ int i ;
235
+ int j ;
227
236
if (l % 64 != 0 ) {
228
237
throw new IllegalArgumentException ("Encrypted message should be a multiple of 64 characters in length" );
229
238
}
0 commit comments