当前位置: 首页 > 知识库问答 >
问题:

带递归的Java凯撒密码?

宋望
2023-03-14

所以,我试图想出一种方法来对凯撒密码进行加密/解密(在这里,你输入一个值,然后将字母沿着字母表移动很多次,例如,如果密钥是3,那么a将变成d,b将变成e,c将变成f,以此类推),但我需要使用递归,而不是迭代。到目前为止,我只对最后一个字符进行了加密,并输出“encrypted-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个答案

郑狐若
2023-03-14

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

public static String cipher(String str, int i) {
    char ch = str.charAt(0);
    StringBuffer output = new StringBuffer();
    ch = (char) ('a' + (ch - 'a' + i) % 26);
    output.append(ch);

    if (str.length() > 1) {
        output.append(cipher(str.substring(1), i));
    }

    return output.toString();
}
 类似资料:
  • 问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的

  • 我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。

  • 示例:返回。如果给定的整数值小于0或大于26,则应返回空字符串。 我的问题是,作为回报,它只给我真或假。如何解决这个问题:该方法应该返回一个字符串,其中每个字符都是根据指定的整数值移动的。

  • 这里是一个加密的消息,首先使用3个位置的凯撒密码,然后5个位置。 解密时应该说: 好的,这是我写的类(您将需要所有的导入),我想感谢任何提前帮助的人:

  • 我想知道如何限制加密的ASCII范围从32-126。 这个是用来解密的 我的加密工作得很好(当我引用解密函数时),但我的解密并不像它应该的那样工作。 额外注意:我们只需要在编码时进行右移,给出一个字符串供整个程序加密和解密(“这是C++”) 注意:在添加更多代码描述的过程中