解码java中的加密字符串

时间:2018-04-25 23:22:00

标签: java encryption character-encoding decode

我正在尝试解码由下面的函数编码的字符串。我尝试通过执行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();
    }

1 个答案:

答案 0 :(得分:3)

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

数学:c += c + i;相当于c = (2 * c) + i