расшифровка зашифрованной строки в Java - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь декодировать строку, закодированную функцией ниже.Я попытался отменить шифрование, выполнив 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 голосов
/ 26 апреля 2018

Ваша кодировка является обратимой (для небольших сообщений и некоторого набора символов), но ваша формула неверна.Сначала переверните сообщение (для декодирования).Затем повторяйте символы.Вычтите 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

...