正确使用for循环,子串和十六进制ascii代码到字符的转换?

时间:2016-03-28 20:22:14

标签: java for-loop methods substring ascii

我正在尝试创建自己的加密字符串的java加密程序:它接受一个字符串并将每个字符转换为十六进制的ascii表示。我的加密是在两个数字的每一侧添加一个随机数和随机字母,代表每个字符的十六进制ascii。这将为每个加密的字符返回一个6个字符的字符串。例如。 (帮助 - > 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 个答案:

答案 0 :(得分:0)

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

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

而不是

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

此外,

DecryptMessage方法

中存在错误

if条件if (i >= encryptedText.length() - 6) {不会工作,因为它总是会返回false,直到加密消息的最后6个字符为止, 所以,您可以尝试以下内容。

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