如何解决不良的基本解码?

时间:2019-01-30 21:10:43

标签: java encryption

当我使用这种简单的编码/解码方法时,我有一个小错误。当用户通过扫描仪输入像:
字符串:“你好,我叫迈克尔”
编码:“ Pmttw(u?(vium(q {(Uqkpimt”
解码:“你好m7的名字叫迈克尔”

其解码为“ y”的现在为“ 7”

public static String basicEncode(String key) {
String result = "";
int lon = key.length();
char d;
for(int i = 0; i < lon; i++) {
    d = key.charAt(i);
    d += 10;
    result += d;
}

return result;
}

public static String basicDecode(String key) {
    String result = "";
    int lon = key.length();
    char d;
    for(int i = 0; i < lon; i++) {
        d = key.charAt(i);
        d -= 10;
        result += d;
    }

    return result;
}

3 个答案:

答案 0 :(得分:1)

您的代码在basicDecode中缺少10。除此之外,看不到您的问题。

  public static void main(String args[]) {
    String in = "Hello my name is Michael";
    String encoded = basicEncode(in);
    String decoded = basicDecode(encoded);

    System.out.println(in);
    System.out.println(encoded);
    System.out.println(decoded);
  }

  public static String basicEncode(String key) {
    String result = "";
    int lon = key.length();
    char d;
    for (int i = 0; i < lon; i++) {
      d = key.charAt(i);
      d += 10;
      result += d;
    }

    return result;
  }

  public static String basicDecode(String key) {
    String result = "";
    int lon = key.length();
    char d;
    for (int i = 0; i < lon; i++) {
      d = key.charAt(i);
      d -= 10;
      result += d;
    }

    return result;
  }

这将产生以下结果:

Hello my name is Michael
Rovvy*w?*xkwo*s}*Wsmrkov
Hello my name is Michael

答案 1 :(得分:1)

如果您希望获得此信息:

编码:“ Pmttw(u?(vium(q {(Uqkpimt”

然后输入您的代码

public static String basicEncode(String key) {
String result = "";
int lon = key.length();
char d;
for (int i = 0; i < lon; i++) {
  d = key.charAt(i);
  d += 8; //CHANGED TO 8
  result += d;
}

return result;

}

这是通过输入“ Hello,我的名字叫迈克尔”作为basicEncode方法的字符串。

您能告诉我该程序的目标是什么吗?哪种方法适合放置初始String?

答案 2 :(得分:0)

也许在我的计算机上使用UTF-8,因为当我在另一个PC环境中执行这些相同的代码时,它可以正常工作。

我如何检查出什么问题了?

我知道,当我想将头寸数量更改为少于8个时,效果很好,但是为什么不将其增加到10个或更多呢?