Проблемы с Vigenere Cipher - PullRequest
       0

Проблемы с Vigenere Cipher

0 голосов
/ 09 сентября 2018

Я относительно новичок в программировании и пытаюсь заставить шифр Vigenere работать должным образом. Я взял некоторые рекомендации от нескольких разных шифров, но сейчас играю с одним, который не работает, если я его модифицирую. Если я изменю пароль на его первоначальный «VigenereCipher» вместо «apple», он будет работать отлично Что такого в моем коде, который создает эту проблему? Я прошу прощения за грязный код, но я копировал и вставлял, чтобы проверить различные изменения в коде.

Выход:

sealseals ealse
FCJJMUMPJB
.+225=582* 

Ожидаемый результат:

sealsealse
encryptedcode (not sure if this is correct above)
HELLOWORLD

код:

        public static void main(String[] args) {
            String key = "apple";
            String ori = "hello world"; 
            String resizedKey = key;
            if (key.length() < ori.length()) {
            for (int i = 0, j = 0; i < ori.length(); i ++) {
                if (ori.charAt(i) == (char)32) {
                    resizedKey += (char)32;
                }
                else {
                    if (j < key.length()) {
                        resizedKey += key.charAt(j);
                        j++;
                    }
                    else {
                        j = 0;
                        resizedKey += key.charAt(j);
                        j++;
                        }                           
                }
            }
        }
                System.out.println (resizedKey);
                String enc = encrypt(ori, resizedKey);
                System.out.println(enc);
                System.out.println(decrypt(enc, resizedKey));

        }                       
        static String encrypt(String text, final String key) {
            String res = "";
            text = text.toUpperCase();
            for (int i = 0, j = 0; i < text.length(); i++) {
                char c = text.charAt(i);
                if (c < 'A' || c > 'Z') continue;
                res += (char)((c + key.charAt(j) - 2 * 'A') % 26 + 'A');
            }
            return res;
        }
         static String decrypt(String text, final String key) {
            String res = "";
            text = text.toUpperCase();
            for (int i = 0, j = 0; i < text.length(); i++) {
                char c = text.charAt(i);
                if (c < 'A' || c > 'Z') continue;
                res += (char)((c - key.charAt(j) + 26) % 26 + 'A');
            }
            return res;
        }
    }   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...