Caesar cipher: Difference between revisions

Content added Content deleted
Line 478: Line 478:


public static String decode(String enc, int offset) {
public static String decode(String enc, int offset) {
return encode(enc, -1 * offset);
return encode(enc, -offset);
}
}


public static String encode(String enc, int offset) {
public static String encode(String enc, int offset) {
offset = offset % 26 + 26;
StringBuilder encoded = new StringBuilder();
StringBuilder encoded = new StringBuilder();
for (Character i : enc.toLowerCase().toCharArray()) {
for (char i : enc.toLowerCase().toCharArray()) {
offset = offset % 26 + 26;
if (Character.isLetter(i)) {
if (Character.isLetter(i)) {
int j = ((((int) i) - 97) + offset) % 26;
int j = (i - 'a' + offset) % 26;
if (j >= 0 && j <= 25) {
encoded.append((char) (j + 'a'));
encoded.append((char) (j + 97));
}
} else {
} else {
encoded.append((char) i);
encoded.append(i);
}
}
}
}