【发布时间】:2013-05-09 18:23:51
【问题描述】:
所以我正在制作一个程序,您可以在其中使用关键字对消息进行编码或解码。我有编码部分,但我不确定如何解码消息。我是 java 新手,所以任何帮助将不胜感激!
到目前为止,这是我的代码:
import java.util.Scanner;
class Coder
{
public static void main(String[] arg)
{
boolean encode = false;
boolean decode = false;
int multi = 1;
Scanner inputdata=new Scanner(System.in);
System.out.print("Type E to encode or D to decode:\n");
String opt=inputdata.nextLine();
if (opt.equals("e")||opt.equals("E"))
{
System.out.print("Type the keyword to use for encoding:\n");
encode = true;
}
else if (opt.equals("d")||opt.equals("D"))
{
System.out.print("Type the keyword for decoding:\n");
decode = true;
}
else
{
System.out.print("Error:This is not an option");
}
if (encode==true)
{
String keyword=inputdata.nextLine();
int[] key = new int[1000];
for (int k = 0; k < key.length; ++k)
{
char c = keyword.charAt(k % keyword.length());
if (c >= 'a' && c <= 'z')
{
key[k] = c-'a';
}
}
System.out.print("Type encode message:\n");
String message=inputdata.nextLine();
for (int i = 0; i < message.length(); ++i)
{
if (message.charAt(i) >= 'a' && message.charAt(i) <= 'z')
{
System.out.println((int)message.charAt(i) - (int)'a' + key[i]);
}
else if (message.charAt(i) >= 'A' && message.charAt(i) <= 'Z')
{
System.out.println((int)message.charAt(i) - (int)'A' + key[i]);
}
else if (message.charAt(i) == ' ')
{
System.out.println(" ");
}
else
{
System.out.println(message.charAt(i));
}
}
}
if (decode==true)
{
}
}
}
【问题讨论】:
-
好的。然后,您输入了一个字符串作为编码键和一个要编码的字符串。您编码并生成一堆数字,每行打印一个。你如何输入要解码的字符串?一堆数字?
-
您从哪里获得代码的编码部分的代码/算法?
-
@HovercraftFullOfEels 非常接近于“Captain Midnight Decoder Ring”,在您浏览消息时可按顺序使用可变数量的环。所以 key = def 和 msg=abc 产生 dfh。但它不会在字母表的末尾滚动。
-
@LeeMeador:是的,我以前见过这种事情,但我认为他没有编造这种算法。如果他得到了编码算法,他肯定得到了解码算法。它与 ROT 13 一样安全,但这不是问题。
-
您可以查看MessageDigest,使用 SHA 算法进行解密。