2014-01-30 5 views
-1

Итак, что я пишу в своем блоке дешифрования? Есть идеи? Я должен сделать программу, которая шифрует все, что пользователь вводит и расшифровывает. Этот синтаксис является ступенчатым, потому что я добавлю позже сканер и системные входы. Я просто хочу убедиться, что методы работают, когда я использую их в своих операциях печати.Я не могу придумать логику для дешифрования

public class KeysLocks { 

    public static void main(String[] args) { 

     String message = "super saiyan"; 
     System.out.println("message: " + message); 

     String encryption = encrypt(message); 
     System.out.println("encryption: " + encryption); 

     String decryption = decrypt(message); 
     System.out.println("decryption: " + decryption); 


    } 

    private static String encrypt(String message) { 
     String key = "abcdefghijklmnopqrstuwxyz"; 
     String lock = "qwertyuiopasdfghjklzxcvbnm"; 

     String encrypted_sentence = ""; 
     char phrase[] = message.toCharArray(); 

     for(int i = 0; i < phrase.length; i++){ 
      int geasse = key.indexOf(phrase[i]); 
      encrypted_sentence += lock.charAt(geasse); 
     } 
     return encrypted_sentence; 
    } 

    private static String decrypt(String message) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

} 
+0

похоже, что вы уже что-то написали в своем блоке дешифрования. Хотя это не криптографически безопасный алгоритм, я предполагаю, что вы просто играете .. Тогда вы искали соответствующее шифрование? –

+0

Вы запрашиваете схему шифрования? – Tyler

+0

Результатом шифрования и аргументом для дешифрования является байт [], а не a String. Строка не является контейнером для двоичных данных. И почему результат дешифрования называется «encrypted_sentence»? – EJP

ответ

3

Предположения Я собираюсь сделать

  • Когда вы говорите Расшифровать, вы имеете в виду зашифровать. (хотя я покажу, как они могут быть одинаковыми)
  • Вы не так много знаете о криптографических терминах.
  • Вы допустили некоторые ошибки, поэтому я буду исправлять их до конца.

То, что вы написали, эффективно известно как s-box. Это поле для замены, которое заменяет букву другой буквой и предназначено для запутывания связи между открытым текстом и зашифрованным текстом. Ваш s-box выглядит следующим образом:

SBOX = {q,w,e,r,t,y...m} 

И вы отображение текста на вход к входу символа, так, чтобы заставить его расшифровать, вам необходимо выполнить ту же операцию, но в обратном направлении.

SBOX^-1 = "Something" 

Теперь нам нужно решить, как изменить отображение, поэтому давайте начнем с самого начала. Если я зашифрую a с вашим s-box, он даст мне q. Таким образом, в вашем расшифровке s-box, q должен отображаться на a, и лучший способ сделать это - положить a в положение q. Поэтому мы знаем, что это выглядит примерно так:

SBOX^-1 = {null, null, null ..., a, null, null... } 

Теперь перейдем к b. Мы шифруем b и получаем w. Итак, давайте разместим b в позиции w.

SBOX^-1 = {null, null, null ..., a, null, null... ,b, null, null} 

И вы создаете картину оттуда. При расшифровке вы используете то же самое key (хотя в этом контексте я не уверен, что это точное имя), и вы используете тот же метод, что и для encrypt, только с другим s-box или в вашей программе lock.

Заметки о коде в общем

  • Задавая вопрос, постарайтесь написать свой код на английском языке. Такие слова, как geasse, ничего не значат и не помогают легко передать смысл вашего кода.

  • При создании String добавление внутри цикла является крайне неэффективным методом достижения этого. Вы должны изучить класс StringBuilder, чтобы динамически создавать объекты String.

Дополнительное чтение

  • ли прочитанный о substitution boxes. Это объяснит концепцию, которую вы пытаетесь передать.

  • Подробнее об основах шифрования. Я нашел this, чтобы быть очень хорошим ресурсом, когда узнал об этих идеях.

  • И наконец, класс StringBuilder. Here - очень хороший учебник, предоставленный самим Oracle, чтобы объяснить, как используется класс StringBuilder, и, что более важно, , почему вы должны использовать его для добавления.

+0

Я честно не знаю, почему мой профессор дал нам это задание. Это совсем не принципиально и очень неприятно. – PatGreens

+0

Все в порядке, вам просто нужно потратить минуту и ​​подумать об этом. Где вы застряли? – christopher

+0

Часть, где я должен использовать свой SBOX в своем блоке дешифрования. Можем ли мы пойти в чат, мне действительно нужен человек пошагового руководства. – PatGreens

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