2014-09-07 5 views
-2

Я пытаюсь зашифровать некоторый открытый текст с помощью определенного метода. Учитывая ключ [4,5,6,7] и открытый текст «Это некоторый открытый текст» Первая буква - это первый номер в ключе 4, поэтому T становится X, двигаясь вперед 4 (T, U, V, W, X) Далее буква H является 5, поэтому H становится M (H, I, J, K, L, M}Как выбрать значение из массива (см. Описание для дополнительной информации)

Когда конец ключа достигнут, просто начинайте с начала и продолжайте шифрование до завершения. У меня есть основной контур в Python:

#key = [4,5,12,6,7,11,8,9,1,2,3,10] 
key = [4,5,6,7] 
letters = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] 
plaintext = "IfyouarereadingthisthenthisplanetmayhavehopeafterallYouhavethepowerand" 
plaintext = plaintext.upper() 
keySpot = 0 
count = 0; 
keyCount = 0 
letterLocation = 0 
tempLetter = "" 
i = 0 

while(count < len(plaintext)): 
    tempLetter = plaintext[count] 
    for i in range(0, len(letters)): 
     if(tempLetter == letters[i]): 
      letterLocation = i 
     i = i + 1 

    if(keyCount > 4): 
    keyCount = 0 

letterLocation = letterLocation + key[keyCount] 
keyCount = keyCount + 1 

if(letterLocation > 27): 
    #need some logic here so it wont go out of bounds 

print letters[letterLocation] 
count = count + 1 

Моя главная проблема в том, что делать, если letterLocation слишком большой при движении вперед и получает мимо Z. Когда он попадает в Z мне это нужно, чтобы начать все сначала в точке А и держать идя до конца. Например, если буквой открытого текста было Y, а ключ был равен 5 Y, то D (Y, Z, A, B, C, D}

Как это сделать? Любая помощь будет высоко оценена, она может быть в Java, C, C++, JavaScript или Python, что проще всего. Если вы придумаете лучший метод, я советую. Благодаря!

+0

Для начинающих, есть оператор в математике называется по модулю: https://en.wikipedia.org/wiki/Modulo_operation –

ответ

1

Ну, это довольно легко, просто использовать по модулю:

letterLocation = (letterLocation + key[keyCount]) % 26 
+0

Я m собирается проверить это сейчас, но похоже, что это сработает! Спасибо, что нашли время ответить и прочитать очень сложно объяснить вопрос. – Cris

+0

Мой код сломан где-то, я думаю, он работает до 5 букв, а затем начинает действовать goofy. – Cris

+0

Goofy - это еще не все. У вас все еще есть код «> 4» в коде? –

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