繁体   English   中英

正确使用for循环,子字符串以及将十六进制ascii代码转换为字符?

[英]Correct use of for loop, substring, and conversion of hexadecimal ascii code to character?

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

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

任何帮助表示赞赏! 我是java的新手,我正在尝试编写程序以更好地了解如何使用主程序调用的这些方法!

在您的代码中, 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) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM