首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Zend Framework保存密码

使用Zend Framework保存密码
EN

Stack Overflow用户
提问于 2012-03-29 20:45:53
回答 1查看 2.4K关注 0票数 0

我已经创建了一个带有密码字段的表单,用于在网站上注册。

代码语言:javascript
复制
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]']",
)),

如何将其保存到数据库中?我试过这样的方法,但不起作用。密码未加密。

代码语言:javascript
复制
$profile = new Profile();
$entry = $profile->createEntry(array(
    'firstname' => $requestPost['firstname'],
    'lastname' => $requestPost['lastname'],
    'email' => $requestPost['email'],
    'password' => $requestPost['password'],
    'published' => 1,
));
$profileId = $entry->save();
EN

回答 1

Stack Overflow用户

发布于 2012-03-30 18:06:03

这是一个简单的示例:

代码语言:javascript
复制
$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();

要在以后对密码进行身份验证,请重新构建并散列字符串:

代码语言:javascript
复制
//both hashes should match exactly
if (sha1($salt . $inputPassword) === $password)//$password form data store

散列通常用于密码,因为它在资源上更容易使用,并且除了创建密码的人之外,没有人可以知道它。没有合理的方法来撤消加了盐的哈希。您所知道的就是输入的散列password+salt是否与保存的散列password+salt相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9925622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档