Java Ascii 到字符串解密

我正在完成一个类的问题,该问题需要将字符串消息从带有键的 ascii 转换为解码的字符串消息。我已经尝试从 message.charAt(i) 访问字符串并将其转换为 char 数组,但两次我都在控制台上得到了这个奇怪的输出。

http://img2.mukewang.com/6150378b0001decb03910168.jpg

这是我运行的方法


public static char[] decrypt(String message) {

    char[] decoded = new char[message.length()];

    char[] newmessage = message.toCharArray();

    int ascii;

    for(int key=0; key<=100; key++) {

        for(int i=0; i<message.length(); i++) {

            ascii = ( (int)newmessage[i] + 127) - 32;

            if(ascii > 126)

                decoded[i] = (char)((int)newmessage[i] - key);

            else

                decoded[i] = (char)((((int)newmessage[i] - key) +127) -32);

        }

    }

    System.out.println(decoded);

    return decoded;

}

这是我在 main 中调用它的地方


    System.out.println("Problem 3");

    String message =  ":mmZ\\dxZmx]Zpgy";

    System.out.println("Message Received: ");

    System.out.println(message);

    decrypt(message);

我似乎无法弄清楚我哪里出错了。预期的输出是每个键都与相应的解码消息一起打印。第 88 个键将显示消息“Attack at Dawn!”。


明月笑刀无情
浏览 296回答 4
4回答

holdtom

如果您需要的只是从 ASCII 解码为 Java 字符串,那么正确的方法之一是char&nbsp;[]&nbsp;output&nbsp;=&nbsp;StandardCharsets.US_ASCII.decode(ByteBuffer.wrap(input)).array();根据您的性能要求,您可能希望预先分配缓冲区,并且可能是解码器(在上面的示例中 Charset::decode 将动态创建一个)。

Smart猫小萌

好吧,首先你现在需要用Key 解码消息,:mmZ\\dxZmx]Zpgy所以为了简单的部分,尝试先Hey用你制作的算法解码消息,你忘记了最重要的部分:if(originalChar + key > 126) then&nbsp; &nbsp; &nbsp;EncryptedChar = 32 + ((originalChar + key) - 127)else&nbsp; &nbsp; &nbsp;EncryptedChar = (originalChar + key)因此,您在 if 语句中缺少减号键&nbsp;if(ascii - key > 126)总是去重新阅读你的问题。&nbsp; &nbsp; for(int key=0; key<=100; key++) {&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0; i<message.length(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ascii = ( (int)newmessage[i] + 127) - 32;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(ascii - key > 126)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; decoded[i] = (char)((int)newmessage[i] - key);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; decoded[i] = (char)((((int)newmessage[i] - key) +127) -32);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Decoded with i=" +key +":"+new String(decoded)); // For check what is the correct message.&nbsp;&nbsp; &nbsp; }剧透 消息是:黎明时分攻击!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java