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

用爪哇制作凯撒密码

宋博易
2023-03-14

我正在为我的计算机科学课做凯撒密码,我被卡住了。我已经想出了如何满足项目所需的一些元素,比如空格,当加密密钥设置为一个固定的数字时,它就可以工作了。然而,其中一个要求是,当你点击“Z”时,字母表会环绕,用户可以输入他们自己的加密密钥值。它还需要加密和解密消息。任何提示,任何人可以给我关于哪里我走错了,将不胜感激!以下是我目前所拥有的:(我是在Eclipse中制作的)

import java.util.Scanner;

public class CaesarCipher {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("What is the message? (all lowercase)");
        String plainText = keyboard.nextLine();

        System.out.println("Please enter the encryption key: ");
        int encryptionKey = keyboard.nextInt();

        System.out.println("The encrypted text is: ");
        int charPos = 0;

        while (charPos < plainText.length()) {
            char currChar = plainText.charAt(charPos);
            int charAsNum = (int) currChar;
            int cipherLetterAsNum = charAsNum + encryptionKey;
            char cipherLetter = (char) cipherLetterAsNum;

            if (currChar == 'x' || currChar == 'y' || currChar == 'z') {
                currChar = plainText.charAt(charPos);
                charAsNum = (int) currChar;
                cipherLetterAsNum = charAsNum + encryptionKey - 26;
                cipherLetter = (char) cipherLetterAsNum;
                System.out.print(cipherLetter);
                charPos = charPos + 1;
            }

            if (currChar == ' ') {
                System.out.print(currChar);
            } else {
                System.out.print(cipherLetter);
            }
            charPos = charPos + 1;
        }
    }
}

共有1个答案

茹康裕
2023-03-14

我认为您必须检查encryptedChar是否大于91(z的ascii值),如果是,它应该减去26。如果要解密文本,只需对encryptionKey进行减除,如果encryptedChar小于65(a的ascii值),则必须加26。我不确定ascii值是否正确,所以最好查查。

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

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

  • 我在做凯撒密码,这是我的密码 我尝试使用%来解决这个问题(我也不是100%确定如何使用模运算符),但我没有成功。 文本文件的内容是:

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

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