带有递归的Java中的凯撒密码?

时间:2015-05-15 04:04:43

标签: java encryption recursion

所以,我试图找到一种方法来对凯撒密码进行加密/解密(在这里你可以获取一个值,然后在字母表中多次移动字母,例如,如果密钥是3,然后a将成为d,b将是e,而c将是f等等)但我需要使用递归,而不是迭代。这是我到目前为止所做的,但它只加密最后一个字符,并输出“加密 - w”,这对我来说没有意义。

public class Driver {

static String encrypted = "";

public static void main(String[] args) {

    System.out.println("Encrypted - " + cipher("encrypt", 3));

}

public static String cipher(String str, int i){
    char ch = str.charAt(0);
    StringBuffer output = new StringBuffer();
    if (str.length() <= 1) {
            ch = (char) ('a' + (ch - 'a' + i) %26);
            output.append(ch);
            return output.toString(); 
    }
    else{
        return cipher(str.substring(1),i);

    }


}

}

1 个答案:

答案 0 :(得分:1)

嘿,在这个逻辑中,你只对最后一个字母进行加密。你必须为所有的字母做这件事。正如@Thilo正确地说你也必须照顾头脑。 工作解决方案是这样的:

SELECT * FROM testtable WHERE HouseInfo NOT LIKE '%[a-z0-9]'