2016-02-26 3 views
3

Сканер и увольнении запрашивает Vigenere шифра у меня есть:Будет ли этот шифр vigenere возможным в Java?

for(int i = 0; i < text.length(); i++){ 
    int first = text.charAt(i); 
    for(int j = 0; j < key.length(); j++){ 
     int second = key.charAt(j); 
     int that = first + (second % 26); 
     output = output + (char)that; 
    } 
} 

Моя идея здесь Vigenere шифра иметь один для цикла захвата каждого символа открытого текста слова. Затем возьмите вторую запись для каждой петли ключевого слова. Если открытый текст «первым» будет представлять собой исходное положение письма. Ключевое слово будет представлять каждый отдельный сдвиг символов открытого текста. Это будет возможно?

+0

Пожалуйста, правильно отпечатайте свой код, чтобы он был читабельным. –

+0

.... Я сделаю это для вас на этот раз, но в будущем, пожалуйста, приложите это важное усилие самостоятельно. –

+0

Ключом к решению этой и подобных проблем является эксперимент и опробование. Итак, что происходит, когда вы пытаетесь это сделать? –

ответ

0

Ваша проблема в том, что у вас есть 2 петли, но вы должны иметь только 1 цикл.

Вместо петли для ключа, вы должны использовать модульную длину ключа, чтобы дать вам сдвиг для этой итерации.

Закрепление логики (и давать осмысленные имена переменных):

for (int i = 0; i < text.length(); i++){ 
    int letter = text.charAt(i); 
    int shift = key.charAt(i % key.length()) - 'A'; 
    int encrypted = (letter + shift) % 26 + 'A'; 
    output = output + (char)encrypted; 
} 

Основное различие с этим кодом и у вас выражение i % key.length(), который непрерывно перебирает письма Ключом, чтобы определить сдвиг для каждой буквы ,

 Смежные вопросы

  • Нет связанных вопросов^_^