I have a string that needs to be encyrpted i am using a shift cipher. I got the methods off "Dream in code" (http://www.dreamincode.net/forums/topic/190725-secret-code-i-ceasar-cipher/ (post #6)). This shift cipher doesn't encrypt numbers but does change them to capital letters in the encryption process. But in the decryption process changes them to lower case numbers 5 less then the capitalized number. I am unsure of how to change these 2 methods to allows them to deal with numbers correctly.
Encrypt method, this method takes string content which is the contents of an array and shifts it 5 places and then passes it back to a saving method, and then content is saved to a txt file.
public String encodeWord(String content) {
StringBuffer r = new StringBuffer();
for (int i = 0; i < content.length(); i++) {
char c = content.charAt(i);
c = (char)('a' + (c -'a'+ 5) % 26);
r.append(c);
}
return r.toString();
} // encode()
Decrypt method, this takes the txt file previously mentioned and during the load function before it is loaded back to the array each line of the string is passed here to be decrypted and then passed back to the load function.
public static String decodeWord(String str) {
StringBuffer r = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
c = (char)('a' + (c - 'a' + 21) % 26);
r.append(c);
}
System.out.println(str);
return r.toString();
}
解决方案
you need something like
if (is_digit(c))
c = (char)('0' + (c - '0' + 5) % 10);
else if (is_letter(c))
c = (char)('a' + (c - 'a' + 5) % 26);