mysql salt bcrypt_php – Crypt()salt生成和密码加密,执行得很好?

这些是我用于密码加密和密码验证的一些功能.想知道这是否是处理它的好方法.我正在使用codeigniter框架.

这是’加密’的功能:

function crypt_pass( $input ){

$salt = substr(sha1(date('r')), rand(0, 17), 22);

$cost = 10;

$hash = '$2y$' . $cost . '$' . $salt;

$pw_and_salt['pw'] = crypt($input, "$hash");

$pw_and_salt['salt'] = $salt;

return $pw_and_salt;

}

我将密码和盐存储在我的数据库中.这是登录功能:

function login(){

$this->db->select('salt');

$salt = $this->db->get_where('users', array('username' => $this->input->post('username') ) )->row();

$where = array(

'username' => $this->input->post('username'),

'password' => crypt( $this->input->post('password'), '$2y$10$' . $salt->salt),

);

$user = $this->db->get_where('users', $where)->first_row();

if (!$user) {

return FALSE;

}else{

if(!empty($user->activation)){

return 2;

}else if($user && empty($user->activation)){

$this->session->set_userdata('id',$user->id);

$this->session->set_userdata('username',$user->username);

$this->session->set_userdata('first_name',$user->first_name);

return 1;

}

}

}

我是以正确的方式实施的吗?这足够安全吗?

版本2:不存储盐,在DB INSTEAD中从密码中提取:

function login(){

$this->db->select('password');

$pw = $this->db->get_where('users', array('username' => $this->input->post('username') ) )->row();

$where = array(

'username' => $this->input->post('username'),

'password' => crypt( $this->input->post('password'), $pw->password),

);

$user = $this->db->get_where('users', $where)->first_row();

if (!$user) {

return FALSE;

}else{

if(!empty($user->activation)){

return 2;

}else if($user && empty($user->activation)){

$this->session->set_userdata('id',$user->id);

$this->session->set_userdata('username',$user->username);

$this->session->set_userdata('first_name',$user->first_name);

return 1;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值