php用户名的密码加密更安全的方法
php中对用户密码的加密主要有两种方法,一种是利用md5加密,另一种是利用password_hash加密,两种方法中后一种的方法比前一种方法安全很多,几乎不能被黑客破解,但php版本必须在5.5以上。下面介绍两种加密方法如何加密才更安全。
新建一个PHP文件,命名为test.php。
利用md5加密。为了更加安全,可以给用户密码加上随机字符串再使用md5加密,产生随机字符串的函数如下:
假如用户的密码$password为123456,则可以把123456加上随机字符串传入md5函数中进行加密。随机字符串和用户密码都存储在数据库中,当解密的时候可以使用进行判断密码是否正确。
1、/4PHP版本在5.5以上的更安全的加密方式
新建一个php文件,命名为test2.php
使用password_hash()方法对密码进行加密,这是目前PHP最为安全的加密方式。假如用户密码为123456,加密方式如下:
由上面代码可见,加密的过程是很简单的,由于使用 bcrypt 算法,密码会随着PHP版本的不同,长度也会不同。因此,数据库里储存密码的字段最好是255个字符,可以避免出错。
password_hash解密的方式是通过password_verify()方法来解密的,假如数据库存储的密码为$db_password,则解密方法如下:
相关推荐
-
PHP基于openssl实现的非对称加密操作示例
本文实例讲述了PHP基于openssl实现的非对称加密操作.分享给大家供大家参考,具体如下: 使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密. 1.安装openssl和php的openssl扩展 2.生成私钥:openssl genrsa 用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护 openssl genrsa -out rsa_private_key.pem 1024 3.生成公钥:rsa命令用于处理RSA密钥.格式转换和打印信息 o
-
PHP常见加密函数用法示例【crypt与md5】
本文实例讲述了PHP常见加密函数用法.分享给大家供大家参考,具体如下: 1.crypt()函数 crypt()函数用于返回使用DES.Blowfish或MD5算法加密过后的字符串,crypt(str,salt)接受2个参数,第1个为需要加密的字符串,第2个为盐值(加密干扰值,如果没有提供,则默认由PHP自动生成),返回的字符串为散列的字符串或者是一个少于13个字符的字符串: <?php //使用crypt()函数进行加密 $password = 'jb51.net'; //没有提供盐值 echo
-
PHP实现基于3DES算法加密解密字符串示例
本文实例讲述了PHP实现基于3DES算法加密解密字符串.分享给大家供大家参考,具体如下: 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 项目地址:https:/
-
PHP扩展mcrypt实现的AES加密功能示例
本文实例讲述了PHP扩展mcrypt实现的AES加密功能.分享给大家供大家参考,具体如下: AES(Advanced Encryption Standard,高级加密标准)是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.Rijndael是在AES中使用的基本密码算法. 对于此算法网上流传有很多php代码实现的版本,其实php的扩展mcrypt完全支持此加密算法,不必要自己去写代码实现.先不说自己写费时费力(当然你若是想研究此加密算法,那另说)
-
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
本文实例讲述了PHP7实现和CryptoJS的AES加密方式互通.分享给大家供大家参考,具体如下: PHP类: class AES { /** * * @param string $string 需要加密的字符串 * @param string $key 密钥 * @return string */ public static function encrypt($string, $key) { // openssl_encrypt 加密不同Mcrypt,对秘钥长度要求,超出16加密结果不变 $d
-
php用户名的密码加密更安全的方法
php中对用户密码的加密主要有两种方法,一种是利用md5加密,另一种是利用password_hash加密,两种方法中后一种的方法比前一种方法安全很多,几乎不能被黑客破解,但php版本必须在5.5以上.下面介绍两种加密方法如何加密才更安全. 新建一个PHP文件,命名为test.php. 利用md5加密.为了更加安全,可以给用户密码加上随机字符串再使用md5加密,产生随机字符串的函数如下: 假如用户的密码$password为123456,则可以把123456加上随机字符串传入md5函数中进行加密.随
-
python base64库给用户名或密码加密的流程
给明文密码加密的流程: import base64 pwd_after_encrypt = base64.b64encode(b'this is a scret!') pwd_before_encrypt = base64.b64decode(b'dGhpcyBpcyBhIHNjcmV0IQ==').decode('ascii') print(pwd_after_encrypt) print(pwd_before_encrypt) 运行结果: b'dGhpcyBpcyBhIHNjcmV0IQ==
-
Spring Boot 中密码加密的两种方法
先说一句:密码是无法解密的.大家也不要再问松哥微人事项目中的密码怎么解密了! 密码无法解密,还是为了确保系统安全.今天松哥就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全. 1.为什么要加密 2011 年 12 月 21 日,有人在网络上公开了一个包含 600 万个 CSDN 用户资料的数据库,数据全部为明文储存,包含用户名.密码以及注册邮箱.事件发生后 CSDN 在微博.官方网站等渠道发出了声明,解释说此数据库系 2009 年备份所用,因不明原因泄露,已经向警方报案,后又在
-
Yii2处理密码加密及验证的方法
在Yii2中提供了密码加密以及验证的一系列方法,方便我们的使用,它使用的是bcrypt算法.查看源码我们可以发现它使用的是PHP函数password_hash()和crypt()生成. 加密: /** * $password 要加密的密码 * $hash 加密后的hash字符串 */ $hash = Yii::$app->getSecurity()->generatePasswordHash($password); 验证密码: /** * $password 要验证的明文密码 * $hash
-
使用 Salt + Hash 将密码加密后再存储进数据库
(一) 为什么要用哈希函数来加密密码 如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码. 解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(Hash Function).哈希函数的具体定义,大家可以在网上或者相关书籍中查阅到,简单地说,它的特性如下: (1)原始密码经哈希函数计算后得到一个哈希值 (2)改变原始密码,哈希函数计算出的哈希值也会相应改变
-
C#使用 Salt + Hash 来为密码加密
(一) 为什么要用哈希函数来加密密码 如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码. 解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(Hash Function).哈希函数的具体定义,大家可以在网上或者相关书籍中查阅到,简单地说,它的特性如下: (1)原始密码经哈希函数计算后得到一个哈希值 (2)改变原始密码,哈希函数计算出的哈希值也会相应改变
-
ajax验证用户名和密码的实例代码
本文实例为大家介绍了ajax验证用户名和密码的具体代码,供大家参考,具体内容如下 1.ajax主体部分 var xmlrequest; function createXMLHttpRequest(){ if(window.XMLHttpRequest){ xmlrequest=new XMLHttpRequest(); } else if(window.ActiveXObject){ try{ xmlrequest=new ActiveXObject("Msxm12.XMLHTTP")
-
防止浏览器记住用户名及密码的简单实用方法
如何设置能禁止浏览器自动保存表单信息,比如用户名,密码? 现在很多浏览器都有自动填写功能,我在input上使用了autocomplete="off",但在有的浏览器上还是被记住了用户名跟密码,请问有没有更有效及简便的方法来防止浏览器记住用户名及密码? 1.针对浏览器记住密码 1).首先大部分浏览器都是根据表单域的type="password"来判断密码域的,所以针对这种情况可以采取"动态设置密码域"的方法: 复制代码 代码如下: <inpu
-
数据库账号密码加密详解及实例
数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中验证的加密方式是单独配置的.如下: <authentication-manager> <authentication-provider user-service-ref="userDetailService"> <password
-
SpringBoot+Shiro学习之密码加密和登录失败次数限制示例
这个项目写到现在,基本的雏形出来了,在此感谢一直关注的童鞋,送你们一句最近刚学习的一句鸡汤:念念不忘,必有回响.再贴一张ui图片: 前篇思考问题解决 前篇我们只是完成了同一账户的登录人数限制shiro拦截器的编写,对于手动踢出用户的功能只是说了采用在session域中添加一个key为kickout的布尔值,由之前编写的KickoutSessionControlFilter拦截器来判断是否将用户踢出,还没有说怎么获取当前在线用户的列表的核心代码,下面贴出来: /** * <p> * 服务实现类
随机推荐
- Mootools 1.2教程 输入过滤第一部分(数字)
- Jquery实现自定义窗口随意的拖拽
- javaScript语法总结
- 基于Python和Scikit-Learn的机器学习探索
- Python列表list内建函数用法实例分析【insert、remove、index、pop等】
- asp.net viewstate 回发机制
- ASP.NET取得所有颜色值示例
- ajax完美实现两个网页 分页功能的实例代码
- 基于Python3 逗号代码 和 字符图网格(详谈)
- Android之AppWidget(桌面小部件)开发浅析
- php生成图片验证码的方法
- python使用psutil模块获取系统状态
- javascript怎么禁用浏览器后退按钮
- JavaScript访问字符串中单个字符的两种方法
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- 数据结构 二叉树的递归与非递归
- getJSON调用后台json数据时函数被调用两次的原因猜想
- 自己写了一个展开和收起的多更能型的js效果
- asp.net(c#)下Jmai去说明 使用与下载
- Android Studio Intent隐式启动,发短信,拨号,打电话,访问网页等实例代码