PHP比md5更安全的加密方式--哈希密码

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

传统加密方式:

md5(密码+盐值);

1
2
3
4
5
$passwordString = 'your password' ; //你的密码
 
$salt = "your salt value" ; //盐值,增加复杂度(随机字串)
 
$md5Password =md5( $passwordString . $salt );

    从理论上来说,md5不可逆,算是一种比较安全的加密方式。但是我要提醒的是,md5早在04年的时候就被中国人破解(请自行搜索山东大学王小云)。一旦被人拖库的化,密码泄漏的可能性极大。


现在推荐一种新的处理方式:密码散列算法函数



    PHP5.5引入了Password Hashing函数,内核自带无需安装扩展。在PHP5.4下测试了下也可是可以的,使用前最好确认一下你当前的环境是否支持这些函数。


Password Hashing主要提供了4个函数

1
2
3
4
5
6
7
8
9
10
11
//查看哈希值的相关信息
array  password_get_info (string  $hash )
 
//创建hash密码
string password_hash(string  $password  , integer  $algo  [,  array  $options  ])
 
//判断hash密码是否特定选项、算法所创建
boolean password_needs_rehash (string  $hash  , integer  $algo  [,  array  $options 
 
boolean password_verify (string  $password  , string  $hash )
//验证密码


代码演示:

1
2
3
4
5
6
7
8
9
10
$password  'password123456' ; //原始密码
//使用BCRYPT算法加密密码
$hash_password  = password_hash( $password , PASSWORD_BCRYPT);
 
 
if  (password_verify( $password  $hash_password )){
    echo  "密码匹配" ;
} else {
    echo  "密码错误" ;
}


重要特征:

    通过password_hash加密后的密码,使用字典方式很难破解,因为每次生成的密码都是不一样的。破解这种加密只能采用暴力破解。


最后提醒:

    加密方法再好,原始密码设置的过于简单都容易被破解,设置复杂的密码才是王道。










本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/1926557,如需转载请自行联系原作者
目录
相关文章
|
17天前
|
Linux PHP 数据安全/隐私保护
2024授权加密系统PHP网站源码
2024授权加密系统PHP网站源码
100 58
|
4月前
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
83 0
|
3月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
93 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
3月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
45 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
218 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
3月前
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
117 0
|
3月前
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
45 0
|
算法 Unix PHP
如何在C#中生成与PHP一样的MD5 Hash Code
原文:如何在C#中生成与PHP一样的MD5 Hash Code   最近在对一个现有的系统进行C#改造,该系统以前是用PHP做的,后台的管理员登陆用的是MD5加密算法。在PHP中,要对一个字符串进行MD5加密非常简单,一行代码即可: md5("Something you want to encrypt.")   直接调用md5()方法,然后将要进行MD5加密的字符串传进去,就可以得到返回的hash code。
1160 0
|
2月前
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
57 0
|
1月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####