Doo*_*Sea 1 java encryption decode character-encoding
我正在尝试解码由下面的函数编码的字符串。我尝试通过执行以下操作来反转加密c -= c-i,但它似乎不起作用。谁能解释一下这是如何工作的?
public static String encode(String message){
StringBuilder b = new StringBuilder();
for(int i = 0;i<message.length();i++){
char c = message.charAt(i);
b.append(c += c+i);
}
return b.reverse().toString();
}
Run Code Online (Sandbox Code Playgroud)
您的编码是可逆的(对于小消息和某些字符集),但您的公式不正确。首先,反转消息(进行解码)。然后迭代字符。从当前值中减去i,然后除以2。喜欢,
public static String decode(String message) {
StringBuilder b = new StringBuilder(message).reverse();
StringBuilder o = new StringBuilder();
for (int i = 0; i < b.length(); i++) {
char c = b.charAt(i);
c -= i;
c /= 2;
o.append(c);
}
return o.toString();
}
Run Code Online (Sandbox Code Playgroud)
数学:c += c + i; 相当于c = (2 * c) + i