移位密码不会移位数字将它们更改为大写字母,然后不会将它们更改回来。 Java的

时间:2014-06-02 01:06:01

标签: java arrays encryption

我有一个需要加密的字符串我正在使用移位密码。我把方法关掉了#34; Dream in code" (http://www.dreamincode.net/forums/topic/190725-secret-code-i-ceasar-cipher/(第6条))。此移位密码不会对数字进行加密,但会在加密过程中将其更改为大写字母。但在解密过程中,将它们更改为小写数字5,然后大写数字。我不确定如何更改这两种方法以允许它们正确处理数字。

加密方法,此方法获取字符串内容,该内容是数组的内容并将其移动5位,然后将其传递回保存方法,然后将内容保存到txt文件。

    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()

解密方法,这将获取前面提到的txt文件,并在加载函数加载到数组之前将字符串的每一行传递到此处进行解密,然后传递回加载函数。

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();                   
          }

1 个答案:

答案 0 :(得分:1)

你需要像

这样的东西
if (is_digit(c))
    c = (char)('0' + (c - '0' + 5) % 10);
else if (is_letter(c))
    c = (char)('a' + (c - 'a' + 5) % 26);