Что является предпочтительным шифром mcrypt для шифрования / дешифрования объектов или массивов php - PullRequest
2 голосов
/ 05 марта 2011

Я буду держать это коротким и простым.В составе библиотеки PHP mcrypt имеется около 40 возможных шифров, см. Здесь .

Я не очень разбираюсь в шифровании, я работаю в предположении, что независимо от используемого шифра,данные при расшифровке идентичны зашифрованным данным (в противном случае, в чем смысл?)

Мне нужно зашифровать, а затем расшифровать либо массив, либо сериализованный стандартный объект.Я просмотрел пару примеров в Интернете базовой реализации библиотеки mcrypt и заметил, что в каждом примере используется отдельный шифр.Меня удивило, было ли в этом какое-то значение или просто личное предпочтение?

Мой вопрос: есть ли существенные различия между этими шифрами, о которых я должен знать, зная, что

  • Я буду шифровать / дешифровать - это либо массив, либо сериализованный стандартный объект, и он содержит относительно мало данных.
  • Эта операция будет довольно необычной, поэтому скорость не является большой проблемой, где бы то ни было в диапазоне<2s приемлемо. </li>
  • Зашифрованную строку необходимо сохранить в файле cookie и передать через строку запроса url (поэтому существуют ограничения по длине и набору символов)

Примечание

Я не после дебатов о том, должен ли я использовать хеш или hmac.Шифрование необходимо и правильный вариант для этой проблемы.

Ответы [ 2 ]

5 голосов
/ 05 марта 2011

Любой разумный шифр шифрует / дешифрует между открытым текстом / зашифрованным текстом, используя правильный ключ.

Существуют огромные различия в выборе шифра. Будь то длина блока, длина ключа и / или общая безопасность. Например, вы никогда не должны использовать DES, потому что он использует только 56-битный ключ. Аналогично для других шифров в списке, на который вы ссылаетесь. Перед использованием любого шифра всегда прочитайте его и определите, подходит ли он для вашего контекста.

Но я не могу вдаваться в подробности о каждом шифре в вашем списке здесь. : -)

Мне лично нравится AES (Rijndael), который принимает ключи трех размеров 128, 192 и 256 бит. Самая известная атака быстрее, чем атака грубой силой, но все еще неосуществима. Это тоже быстро (на самом деле Intel включила машинные инструкции для AES в Уэстмере и Сэнди Бридж).

Змея и Twofish также являются хорошими шифрами. Змей стал вторым после Рейндаэля, а Twofish стал третьим (я думаю, что это было) в конкурсе AES несколько лет назад.

1 голос
/ 22 сентября 2011

Для идеального примера того, что такое шифр, перейдите по этой ссылке. http://perfectcipher.com/tridimensional.html

...