Шифрование NSString с помощью хэша SHA1 - PullRequest
1 голос
/ 27 сентября 2011

Кто-то спросил меня, могу ли я помочь им с небольшим проектом.Все работало идеально, пока я не столкнулся с шифрованием SHA-1.Я работал над этим в течение нескольких дней, но не могу придумать, как решить эту проблему.

Цель состоит в том, чтобы зашифровать NSString, отправив его на удаленный PHP-скрипт и получив ответ от сервера.Я управлял отправляющей и получающей частью, но не могу понять «трудную часть»

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

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

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

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

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

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

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

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

...