Разница между солью и ключом. шифрование - PullRequest
16 голосов
/ 05 сентября 2011

Хорошо, поэтому я пытаюсь немного узнать о шифровании сообщений в моем Java-приложении. Я только что узнал, что СОЛЬ и КЛЮЧ не одно и то же.

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

Ответы [ 2 ]

16 голосов
/ 05 сентября 2011

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

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

  • Чтобы помешать атакующему, имеющему доступ к хешированным данным, идентифицировать столкновение , используя радужную таблицу .
  • Для замедления атакующего, пытающегося атаковать грубой силой.
3 голосов
/ 05 сентября 2011

Ключ , по сути, является паролем, с помощью которого вы блокируете исходное содержимое.

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

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

...