在java中解码加密的字符串

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)

Ell*_*sch 5

您的编码可逆的(对于小消息和某些字符集),但您的公式不正确。首先,反转消息(进行解码)。然后迭代字符。从当前值中减去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