凯撒密码项目

时间:2014-01-28 22:18:15

标签: java encryption

我明天有一个项目,我仍然无法理解。在阅读我的在线教科书以获取有关凯撒密码和加密的信息后,我仍然不知道该怎么做。我是编程的新手,所以大多数代码都不属于我的联盟,但这个项目看起来似乎太过高了,只有三个星期进入学期。

以下是说明: 您的任务是实施凯撒密码。你的密码必须带两个命令行参数,即 未加密的消息和k,转移的数量。您的代码会将未加密的邮件转换为 通过逐个移动每个字母来加密的。然后应该在屏幕上打印新加密的 信息。大写字母在转换期间应保持资本,小写字母应保持较低 案件。此外,确保空间完全不变。如果你不能解释其他标点符号 被改变,被认为是“超越”。

我将如何开始这个项目,你能否向有3周编码经验的人解释。

4 个答案:

答案 0 :(得分:2)

第1步 创建你的字母表。

char[] alphabet = {'A', 'B', 'C', ... , 'X', 'Y', 'Z'};

第2步

转换您的明文。假设args [0]是你的原始消息,args [1]是你的移位,从命令行传入。

char[] plaintext = args[0].toCharArray();
int shift = args[1];

for(int i = 0; i < plaintext.length; i++) {
    for(int j = 0; j < alphabet.length; j++) {
        if(alphabet[j] == plaintext[i]) {
            plaintext[i] = alphabet[(j + shift) % alphabet.length];
        }
    }
}

第3步

将移位的char数组放回字符串并输出答案。

String ciphertext = new String(plaintext);
System.out.println(ciphertext);

答案 1 :(得分:1)

这是家庭作业,所以你可能不会得到很多完整的答案。但这里有一些一般指导:

1 - 提到空格。因此,您需要将输入作为单个字符串,然后将其拆分(拆分)为一个单词数组。这将是您滚动的主数组,当此循环完成时,您的程序已完成。

2 - 现在你需要获取数组的元素(这是单个单词)并按每个字母处理它们。你需要遍历每个单词的字符并应用shift(k)

3 - 一旦完成,你需要“重新组装”你的短语,但在主阵列中的每个单词之后添加一个空格。将其作为“加密”消息输出到屏幕。

答案 2 :(得分:1)

创建一个包含要加密的字符的数组(顺序无关紧要)。在java中查找%运算符,并使用它为输入字符串中的每个项计算加密值。

伪代码示例

  1. 在数组中查找普通索引(处理大小写和特殊字符)
  2. 使用array.length%k计算偏移索引
  3. 使用偏移索引
  4. 查找新的“加密”值

    您可能会发现Character课程很有用。

答案 3 :(得分:1)

您需要查看:

  • Scanner类从命令行读取参数
  • java.lang.String类,用于将字符串转换为单独的字符数组元素
  • 递增和递减字符以添加3以加密或减去3以解密。

请参阅本教程以增加字符:https://stackoverflow.com/questions/2899301/how-do-i-increment-a-variable-to-the-next-or-previous-letter-in-the-alphabet-in

对于初级班来说,这是一个艰难的项目。

查看我制作的这个小程序,以展示如何将字符从小写字母a增加到小写字母b。

 public class alphabet { 
       public static void main(String[] args) { 
            char a = 'a';
            System.out.println("a currently equals: " + a);
            System.out.println("++a now equals: " + (++a));


       }

 }