我想创建一个程序来解密文本文档中的加密消息。关键是数字反转的字母表,例如a = 26,b = 25,c = 24等等。
我已经有了加密邮件的方法,但我找不到解密邮件的方法。我希望尽可能简单地保持这一点,而且对于Java来说,我仍然是一个厚颜无耻的磨砂膏。
答案 0 :(得分:1)
zackehh提出了一个很好的观点。一种解决方案是在编码数字之间添加分隔符。例如,这甚至可能吗?你最终会得到一个匹配“242424”的字符串部分 - 你怎么知道什么是C和什么是W / Y?
242424
可能会变为2,4,24,2,4
,并且不会有歧义。此功能在您进行更改的前提下运行:
public String decode(String decode) {
String[] keyArray = {"z", "y", "x", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n", "m", "l", "k", "j", "i", "h", "g", "f", "e", "d", "c", "b", "a", "z"};
String[] split = decode.split(",");
StringBuilder decoded = new StringBuilder();
for (String part : split) {
int code = Integer.parseInt(part);
decoded.append(keyArray[code - 1]);
}
return decoded.toString();
}
代码非常干净,但它没有任何错误处理。
非常规输入会出现问题,例如1,2,a,3
在尝试解析a
时导致异常。如果传递1,2,344
,则会抛出另一个例外,例如,因为344
不是代码中的有效密钥(> 26不是字母)。
如果您选择沿着添加字符串分隔符的路径,添加错误处理将作为练习留给读者。