Нужен алгоритм для защиты строки паролем? - PullRequest
0 голосов
/ 16 июня 2011

Я ищу простой и быстрый алгоритм для шифрования / дешифрования строки (длина около 128 байт) с помощью пароля.

Есть ли хорошие алгоритмы?

ДОБАВЛЕНО: Пользовательский алгоритм абсолютно в порядке. Меньше памяти нужно - лучше так (для моего случая). Никаких дополнительных занятий - отлично.

Ответы [ 5 ]

3 голосов
/ 16 июня 2011

AES Algorithm: Implementation

AES является федеральным стандартом для закрытый ключ или симметричная криптография. Поддерживает комбинации клавиш и размеры блоков 128, 192 и 256.


Как насчет IDEA - International Data Encryption Algorithm ?

ИДЕЯ - это название запатентованной и универсально применимый блок алгоритм шифрования, который позволяет эффективная защита переданные и сохраненные данные против несанкционированный доступ третьих лиц.

См. Для реализации: How to implement IDEA?

1 голос
/ 16 июня 2011

Алгоритм Tiny Encryption (http://en.wikipedia.org/wiki/XXTEA).

Это довольно просто и быстро (для алгоритма шифрования) и есть реализации Java.

1 голос
/ 16 июня 2011

См. Java Crypto! для Encryption and Decryption

1 голос
/ 16 июня 2011

AES или 3DES являются довольно "стандартными" симметричными ключами шифрования. Blowfish другой.

Проверьте http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html для использования AES с Java, например.

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

0 голосов
/ 16 июня 2011

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

    public static String encDec(String input, String password) {

      byte[] in = input.getBytes();
      byte[] key = password.getBytes();
      byte[] result = new byte[in.length];
      int k = 0;
      for (int i = 0; i < in.length; i++) {
         result[i] = (byte)(in[i] ^ key[k]);
         k++;
         if (k == key.length) 
           k=0;
      }

      return new String(result);
    }

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

Чтобы сделать его немного лучше: не пропустите пароль String , но байтовый массив со случайными значениями.Но вы хотели метод с паролем, поэтому я реализовал его таким способом;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...