Сохранение пароля с помощью Zend Framework - PullRequest
0 голосов
/ 29 марта 2012

Я создал форму с паролем для регистрации на сайте.

new Zend_Form_Element_Password('password', array(
    'required' => true,
    'label' => $this->getView()->translate('createprofile_password'),
    'filters' => array('StringTrim'),
    'validators' => array(
        new Zend_Validate_StringLength(array('min' => 6, 'max' => 20, 'encoding' => 'utf-8')),
    ),
    'class' => "validate['required','length[6,20]']",
)),

Как мне сохранить его в базе данных? Я пробовал что-то подобное, но это не работает. Пароль не зашифрован.

$profile = new Profile();
$entry = $profile->createEntry(array(
    'firstname' => $requestPost['firstname'],
    'lastname' => $requestPost['lastname'],
    'email' => $requestPost['email'],
    'password' => $requestPost['password'],
    'published' => 1,
));
$profileId = $entry->save();

1 Ответ

1 голос
/ 30 марта 2012

это просто как:

$profile = new Profile();
$entry = $profile->createEntry(array(
    'firstname' => $requestPost['firstname'],
    'lastname' => $requestPost['lastname'],
    'email' => $requestPost['email'],
     //hash password using sha1 and a salt (returns 40 character string) . 
     //Save the salt reference somewhere so you can rebuilt the string to compare hashes for authentication.
     //a salt is arbitrary data prepended or appended to the data being hashed
    'password' => sha1($salt . $requestPost['password']),
    'published' => 1,
));
$profileId = $entry->save();

для аутентификации пароля позже пересоберите и хешируйте строку:

//both hashes should match exactly
if (sha1($salt . $inputPassword) === $password)//$password form data store

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...