public class EncryptedTextMessage {
protected String encryptMessage(String text, int shift) {
int pos = 1;
if ((shift % text.length()) != 0) {
pos = shift % text.length();
}
text = transposition(text, pos);
return original(text, shift);
}
protected String decryptMessage(String text, int key, int textLength) {
text = transpositionReverse(text, key % textLength);
while (text.length() > 0 && text.charAt(text.length() - 1) == ' ') {
text = text.substring(0, text.length() - 1);
}
return text;
}
private String transposition(String message, int shift) {
String encryption = "";
while (shift != 1 && shift != 0 && message.length() % shift != 0) {
message += " ";
}
for (int start=0; start <= shift - 1; start++) {
int pos = start;
while (pos < message.length()) {
encryption += message.charAt(pos);
pos += shift;
}
if ((pos - shift) == message.length() - 1) {
break;
}
}
return encryption;
}
private String transpositionReverse(String message, int shift) {
if (shift != 1 && shift > 0) {
shift = message.length() / shift;
}
return transposition(message, shift);
}
}