Простое XOR сообщение (Javascript / Tcl)? - PullRequest
0 голосов
/ 10 августа 2010

Мне нужно, чтобы имя пользователя / пароль были зашифрованы на стороне клиента перед отправкой через HTTP GET / POST.И сервер будет декодировать его с помощью Tcl перед проверкой базы данных.

В настоящее время я думаю об использовании JavaScript на стороне клиента.Java Applet тоже подойдет.

Есть ли способ, которым я могу легко добиться этого, используя Simple XOR или любые другие методы?(Примеры будут высоко оценены)

Я нашел несколько примеров в C / Python / .NET / Java ... Но не в JavaScript и Tcl.

SSL не вариантиспользовать, к сожалению.

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

superNobody,

Вы должны рассмотреть альтернативы хранению паролей в виде простого текста в базе данных.См .:

Вместо того, чтобы кодировать пароль в Javascript, затем декодировать пароль в Tcl для сравнения с базой данных, вы должны рассмотреть хеширование SHA1 в Javascriptи сохранение хеш-значений SHA1 в базе данных.

Существует несколько доступных примеров хеш-функции SHA1 в javascript (только Google 'sha1 javascript').Библиотека tcllib Tcl имеет поддержку SHA1.

Как уже упоминалось в HaiVu, вам также следует рассмотреть возможность хеширования / хранения больше, чем просто хеш-код с прямым паролем, но вместо этого используйте что-то вроде SHA1 (имя пользователя + имя-пользователя + пароль).Вы можете рассчитать это на клиенте в Javascript и сохранить его в БД.

1 голос
/ 10 августа 2010

Если ssl не вариант, я предлагаю следующую схему, которую многие сайты используют вместо SSL:

  1. На стороне клиента объедините имя пользователя и пароль, затем вычислите из него хеш (MD5 - популярный выбор).
  2. Отправка имени пользователя и хэша на сервер
  3. На стороне сервера получите пароль для этого пользователя из базы данных.
  4. Из имени пользователя и пароля вычислите хеш и сравните его с хешем клиента. Если они совпадают, то пароли совпадают.
  5. Для дополнительной безопасности добавьте немного произвольного текста в комбинацию пользователь + пароль. Этот случайный текст, также известный как «соль», должен быть известен как на стороне клиента, так и на стороне сервера.

Вот предложение о том, как вычислить хэш с использованием MD5:

package require md5

proc calculateHash {user password salt} {
    return md5:md5 -hex "$user:$salt:$password"
}

Как это использовать:

set user "johnny"
set password "begood2mama"
set salt "myDog_is_meaner_than_yourDog"

set hash [calculateHash $user $password $salt]
...