2012-05-10 4 views
1
public class Encryption { 
private static final int[] encrypt = {2, 9, 3, 4, 6, 8, 1, 0}; 
private static final int[] decrypt = new int[8]; 
private static final int minLength = 10; 

String encrypt (String password) { 
    if(password.length()<minLength) { 
     return password; 
    } else { 
     char[] encrypt = password.toCharArray(); 

     for (int i = 0; i < encrypt.length; i++) { 
      encrypt[i] = (char) (encrypt[i]); 
     } 
     return String.valueOf(encrypt); 
    } 
} 

String decrypt (String password) { 
    if (password.length()<minLength) { 
     return password; 
    } else { 
     char[] decrypt = password.toCharArray(); 
     for (int i = 0; i < decrypt.length; i++) { 
      decrypt[i] = (char) (decrypt[i]); 
     } 
     return String.valueOf(decrypt); 
    } 
} 

boolean isValidLength (String password) { 
    if (password.length()<minLength) { 
     return true; 

    } else { 
     return false; 
    } 
} 

int getMinLength(){ 
    return minLength; 
    } 
} 

Предположим, чтобы зашифровать мой пароль (Драйвер еще не создан), но не уверен, что я правильно использовал свои переменные (зашифровать и дешифровать). Шифрование и расшифровка переменных так, что пароль изменяет индекс на то, что пользователь вводит, а также не знает, но я полагаю, что где-то использовать обратный метод purmutation, но не уверен, где? Любая помощь? Нужно, чтобы кто-то сказал мне, если моя программа выключена или близка.Шифрование с использованием классической перестановки

+0

Любой шанс, что вы можете отступить, сделать глубокое дыхание и полностью переписать этот абзац? –

+0

Также потребуется некоторое время, чтобы обеспечить форматирование вашего кода с помощью SO. Устраните лишние пробелы (достаточно 1 пустая строка) и убедитесь, что отступы отображаются правильно. Мы хотим помочь, но сделаем это легко * для нас. :-) –

+0

На самом деле все, что мне интересно, это если я могу продолжить и написать свой драйвер. Эта программа собирается шифровать мой пароль, а затем расшифровывать его правильно. По какой-то причине у меня есть то, что переменная шифрования и дешифрования не используется, и я не уверен, как и куда ее поместить в мою программу, чтобы переупорядочить мой пароль, а затем правильно отлаживает его ... –

ответ

2

Предупреждение - что это хорошее предупреждение - это из-за shadowing

Линия:

char[] encrypt = password.toCharArray(); 

Вызывает [статические] переменную-член [который также] называется encrypt, чтобы затенять этот метод. Таким образом, «значения перестановок» никогда не используются, и используемый алгоритм будет ужасно ломаться. (Это ужасно нарушит, потому что «значения перестановки» не являются одинаковыми для шифрования и дешифрования. Существует еще одна проблема с алгоритмом дешифрования, поскольку она действительно использует также «одинаковые» значения перестановок », но это еще одна вещь для работы через .)

Решения:

  1. Использовать лучше/разные имена (например encryptionKey для перестановок).
  2. Явно использовать Encryption.encrypt для ссылки на переменную-член [статические] .

И, конечно же, пересмотреть алгоритм. Нет необходимости в Encryption.decrypt, и сохранение его там позволит ввести другие ошибки.

Счастливое кодирование.

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