为了账号安全,请及时绑定邮箱和手机立即绑定

Java Ascii 到字符串解密

Java Ascii 到字符串解密

明月笑刀无情 2021-09-26 17:03:37
我正在完成一个类的问题,该问题需要将字符串消息从带有键的 ascii 转换为解码的字符串消息。我已经尝试从 message.charAt(i) 访问字符串并将其转换为 char 数组,但两次我都在控制台上得到了这个奇怪的输出。这是我运行的方法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!”。
查看完整描述

4 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

如果您需要的只是从 ASCII 解码为 Java 字符串,那么正确的方法之一是

char [] output = StandardCharsets.US_ASCII.decode(ByteBuffer.wrap(input)).array();

根据您的性能要求,您可能希望预先分配缓冲区,并且可能是解码器(在上面的示例中 Charset::decode 将动态创建一个)。


查看完整回答
反对 回复 2021-09-26
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

好吧,首先你现在需要用Key 解码消息,:mmZ\\dxZmx]Zpgy所以为了简单的部分,尝试先Hey用你制作的算法解码消息,你忘记了最重要的部分:


if(originalChar + key > 126) then

     EncryptedChar = 32 + ((originalChar + key) - 127)

else

     EncryptedChar = (originalChar + key)

因此,您在 if 语句中缺少减号键


 if(ascii - key > 126)

总是去重新阅读你的问题。


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

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

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

            if(ascii - key > 126)

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

            else

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

        }

        System.out.println("Decoded with i=" +key +":"+new String(decoded)); // For check what is the correct message. 

    }

剧透 消息是:黎明时分攻击!


查看完整回答
反对 回复 2021-09-26
  • 4 回答
  • 0 关注
  • 295 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信