crypt. Хеширование паролей

^math:crypt[password;salt]

Метод хеширует
password с учетом salt.

Параметры:
·password - исходная строка.  
·salt - строка, определяющая алгоритм хеширования и вносящая элемент случайности в результат хеширования, состоит из начала и тела. Начало определяет алгоритм хеширования, тело вносит элемент случайности. Если тело не будет указано, Parser сформирует его случайным образом.  

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

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

Внимание: обязательно нужно задавать случайное тело 
salt, либо это может сделать Parser, если указывать не тело salt, а только его начало.

Таблица доступных алгоритмов

Алгоритм
Описание
Начало salt
Тело salt
MD5
Встроен в Parser, доступен на всех платформах
$apr1$
До 8 случайных букв (в любом регистре) или цифр
MD5
Если поддерживается операционной системой (UNIX)
$1$
До 8 случайных букв (в любом регистре) или цифр
DES
Если поддерживается операционной системой (UNIX)
(нет)
2 случайных буквы (в любом регистре) или цифры
другие
Какие поддерживаются операционной системой (UNIX)
см. документацию к операционной системе, man 5 crypt, функция crypt
см. документацию к операционной системе, man 5 crypt, функция crypt


Внимание: в Parser, чтобы использовать в тексте символ 
$, перед ним необходимо поставить символ ^ - ^$.

Примечание: веб-сервер Apache позволяет в файлах с паролями (
.htpasswd) использовать хеши, сформированные по любому из алгоритмов, представленных в таблице, включая алгоритм, встроенный в Parser.

Пример создания htpasswd-файла
@main[]
$users[^
table::create{name   password
alice   xxxxxx
bob   yyyyyy

}]

$htpasswd[^table::create[nameless]{}]
^users.menu{
    ^htpasswd.append{$users.name:^math:crypt[$users.password;^$apr1^$]}
}

^htpasswd.save[nameless;.htpasswd-parser-test]

Пример проверки пароля
$right[123]
$from_user[
123]
$crypted[^math:crypt[$right;^$apr1^$]]
#обратите внимание на то, что $crypted при каждом обращении разный
$crypted
<br />
^if(^math:crypt[$from_user;$crypted] 
eq $crypted){
    Казнить нельзя, помиловать
}{
    Казнить, нельзя помиловать
}


Подробная информация о MD5 доступна по ссылке: ietf.org/rfc/rfc1321.txt


Copyright © 1997–2024 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 25.09.2024