Node.js, шифрование открытым ключом со стороны клиента. Как это делается?
Здравствуйте! Пытаюсь написать авторизацию(пока просто регистрацию) на Node.js, но плохо понимаю, как сделать это правильно.
Согласно моим представлениям:
Клиент обращается к серверу, сервер генерирует два ключа - открытый и закрытый, открытый посылается клиенту вместе со страницей авторизации. Клиент придумывает и вводит логин и пароль, после чего они хешируются, хеш шифруется открытым ключом и отсылается обратно. Сервер расшифровывает закрытым ключом, добавляет в базу полученный хеш.
И тут встает вопрос:
На сервере в Node.js есть множество встроенных модулей для генерации ключей, шифровки-расшифровки, хеш-функций, однако как происходит шифровка со стороны клиента? Выходит, что сервер должен отослать функцию шифровки и хеширования? Можно ли это вообще осуществить на JavaScript, ведь там используются возведения в степень и очень большие числа?