You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中使用SHA512哈希加密密码并存入数据库的实现方法

CodeIgniter 密码加密处理方案

最优加密方式说明

CodeIgniter 场景下最优的密码加密方案是直接使用PHP原生的password_hash()函数,默认采用bcrypt算法,这也是目前全球web开发领域公认的安全密码存储方案:

  • 自动生成随机盐值,无需手动处理加盐逻辑,可抵御彩虹表攻击
  • 算法成本可配置,后续硬件性能提升后可以方便调整加密强度
  • 无需额外安装扩展,PHP 5.5及以上版本原生支持,和CodeIgniter所有版本兼容

不要使用MD5、SHA1等弱哈希算法,也不要自行实现加密逻辑,避免出现安全漏洞。

代码修改具体位置

你现有代码只需要修改构造$userData数组时password字段的赋值逻辑即可,修改点如下:
找到你注册方法里的这段代码:

$userData = array( 
    'first_name' => strip_tags($this->input->post('first_name')), 
    'last_name' => strip_tags($this->input->post('last_name')), 
    'email' => strip_tags($this->input->post('email')), 
    'password' => strip_tags($this->input->post('password')), 
    'gender' => $this->input->post('gender'), 
    'mobile_no' => strip_tags($this->input->post('mobile_no')) 
);

将其中password行替换为加密后的赋值:

'password' => password_hash(strip_tags($this->input->post('password')), PASSWORD_DEFAULT),

修改后$userData中存储的就是加密后的密码哈希值,直接写入数据库即可。

配套登录验证逻辑注意事项

登录时不要将用户输入的密码加密后和数据库值直接比对,需要使用password_verify()函数做校验,示例逻辑如下:

// 从数据库取出对应用户的哈希密码 $db_password
$input_password = $this->input->post('password');
if(password_verify($input_password, $db_password)){
    // 密码验证通过,执行登录逻辑
}else{
    // 密码错误
}

另外注意数据库存储密码的字段需要设置为varchar(255),预留足够长度适配后续可能的算法升级。

内容的提问来源于stack exchange,提问作者Rana Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:24:03