有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否正确使用for循环、子字符串以及十六进制ascii码到字符的转换?

我正在尝试创建自己的java加密程序来加密字符串:它接受一个字符串并将每个字符转换为其十六进制ascii表示形式。我的加密是在表示每个字符的十六进制ascii的两个数字的每一侧添加一个随机数和随机字母。这将为每个加密的字符返回一个6个字符的字符串。例如,(help->;h->;68->;3+6+g+1+8+f)我尝试使用四个函数(encryptMessage、encryptCharacter、decryptMessage、decryptCharacter)实现。 我搜索了这个网站,找不到任何对我有帮助的帖子。 您能否帮助我确定为什么无法使用decryptCharacter/decryptMessage方法成功解密邮件?我现在只运行一个字符,它不会返回我最初输入的相同字符。 1.我是否在decryptMessage和decryptCharacter方法中正确使用了for循环?2.在方法decryptCharacter中,我是否正确地将ascii十六进制表示形式转换回其各自的字符?如果没有,有人能解释一下我如何更正代码吗

我已将我的程序发布在pastebin上: http://pastebin.com/6QMFYrKD

感谢您的帮助!我是java新手,我正在尝试编写程序,以便更好地理解如何使用主程序调用的这些方法


共 (1) 个答案

  1. # 1 楼答案

    在代码中,DecryptCharacter方法未正确解密。将随机字符和数字添加到字符十六进制表示形式的每个数字中。 所以,你应该这样做

    String hexRep = encryptedCharacter.substring(1, 2) + encryptedCharacter.substring(4, 5) 
    

    而不是

    String hexRep = encryptedCharacter.substring(1, 4);
    

    而且

    DecryptMessage方法中有一个错误

    if条件if (i >= encryptedText.length() - 6) {不起作用,因为在加密消息的最后6个字符之前,它将始终返回false, 因此,您可以尝试以下内容

    if (encryptedText.length() > 0 && encryptedText.length() % 6 == 0) {