Разница между солью и ключом. Шифрование

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

кто-нибудь может помочь мне понять, в чем разница между ними?

2 ответов


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

A соль чаще всего встречается с криптографическим хэш функции, а не функции шифрования. Идея заключается в том, что вместо хэширования только ваших данных (например, пароль), вы хэширования данных+соль, где соль, как правило, случайным образом сгенерированную строку. У них есть (по крайней мере) две цели:

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

на ключ по сути пароль, с помощью которого вы блокируете оригинальный контент.

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


Чтобы дать очевидно простой пример, скажем, вы хотите зашифровать символьную строку. Ваша процедура шифрования заключается в обратном слове. Итак, для строки " Hello, World "после запуска шифрования ваша строка будет"dlroW, olleH". Вы затем можно добавить соль. В этом примере соль будет "foo", поэтому Результат после соления будет"dlroW, olleHfoo". Теперь, если кому-то удалось перепроектировать ваш алгоритм шифрования, они получат "oofHello World", который не является оригинальным сообщением, и, таким образом, ваша информация по-прежнему безопасна!

Это действительно входит в употребление, когда вы многократно шифровать, например,
результат = соль + шифрование(соль+шифрование(соль+шифрование (сообщение))).