php中常用的几种加密方式以及md5加密漏洞以及解决方案
一、md5(php中的最常用的加密方式)
在用md5进行加密时,至少要将md5加密两次以上(包含两次),或者再加上盐进行加密
二、password_hash(php5.5以上版本才可以使用)
官方说明链接:http://www.php.net/manual/zh/function.password-hash.php
1. 用户注册时提交过来密码,我们对用户密码进行加密,这里选择password_hash进行加密
2. 加密之后,将加密好的密码存储到数据表中
3.用户再次登录时,我们从表中取出密码,并使用password_verify函数进行校验,查看两种密码是否相同
简单的使用:
//用户注册时提交的密码
$pass_user_commit = '123456';
//对用户提交的密码进行password_hash加密,并存储到数据库
$pass = password_hash($pass_user_commit,PASSWORD_BCRYPT);
//echo $pass;
//第一次输出生成的密码: $2y$10$Y/rlaKniAaj9y70zJgMfsespKfHNZjM5FyjRRvgbGlKXyr.1yJIIG
//第二次输出生成的密码: $2y$10$vveX2r5nQr4mc2M.8vAdDeTShA0gMX.73uMd18V.Y.7E44qLloqgi
//由此可见,由password_hash函数生成的密码是动态的,破解几乎很难
//用户登录时提交的密码
$pass_user = '12345678';
//将用户登录时提交的密码与用户注册时提交的密码进行对比
$re = password_verify($pass_user,$pass);
if ($re) {
echo "密码真确";
} else {
echo "密码错误";
}
三、sha1
和md5作用类似,加密方式也类似,相当于md5的加强版吧,据说是比md5稍微安全一点
简单使用:
<?php
$str = "113rertrt&&@#$31231334";
$str = sha1($str);
echo $str;//80079e03d65a4ba2314ddca239e7ee08ee50bd2d
四、openssl_encrypt
作为被废弃的mycrypt加密方式的替代,openssl_encrypt自然有很大改进。条件允许,这款加密方式也比较安全方便,破解起来非常困难。
简单的使用:
<?php
$str = 'gfdfg435325524tt1';
$openssl_key = '4541&Ͷ@66';
$en_method = 'AES-256-ECB';
//get_openssl_cipher_methods();//获取openssl_encrypt的加密方式列表
//openssl_encrypt加密
$str_en = openssl_encrypt($str,$en_method,$openssl_key);
echo $str_en;//R8ZhAYeGBIO2FUVgRj1lD9bHjA3BjSRXDboVC83eXc0=
echo "<hr>";
//openssl_decrypt解密
$str_de = openssl_decrypt('rertrtreretrrrtr45=',$en_method,$openssl_key);
echo $str_de;//mmmo56451212158ss0
/**
* 获取openssl_encrypt method
* 就是openssl_encrypt的第二个参数
*/
function get_openssl_cipher_methods()
{
$ciphers = openssl_get_cipher_methods();
echo "<pre>";
print_r($ciphers);
echo "</pre>";
}
五、base64_encode
使用场景:加密url,传输二进制数据(如邮件主题以及图片等),加密cookie,生成密钥,证书等。
这里以加密图片(对图片进行编码)为例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php
//对图片进行64位编码
$img_en = base64_encode(file_get_contents('./233.jpg'));
//注:编码后,会生成一串字符串,将此生成的字符串填入img的标签里即可,如下
?>
<!--html显示编码后的图片-->
<img src="https://img-blog.csdnimg.cn/2022010709062635350.png">
</body>
</html>
php中常用的几种加密方式以及md5加密漏洞以及解决方案相关推荐
- 【温故知新】——原生js中常用的四种循环方式
一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0 网页输出"欢迎下次光临" 在网页中弹出框输入1 网页输 ...
- python2 md5加密_Python的加密方式:MD5加密
Python的加密方式:MD5加密 1.MD5加密 MD5加密是常用的一种加密方式,不可逆,在日常的字符串加密,请求报文加密中经常用到. Python使用MD5加密使用的是Python自带的模块has ...
- CSS中常用的几种定位方式
定位的基本语法: position:方式 top: 多少px; right: 多少px; left: 多少px; bottom: 多少px; 有常用的几种方式,如下: 第一种:相对定位 relativ ...
- Rabbitmq中常用的五种连接方式
目录 前提准备 方式一: Hello World 服务端(provider)代码 客户端(customer)代码 方式二: work(以下方式都是通过工具类来创建connection对象) 有两种方 ...
- MD5加密方式和MD5加密后的类型(16位和32位)
文章目录 1. 加密方式 2. 加密后的格式 代码收录 1. 加密方式 MD5一般的加密方式是下面这种方式 public String Md5(String str) {if (str.equals( ...
- js学习总结----js中常用的四种输出方式
1.alert('内容') 在浏览器中弹出框显示我们的内容 不输入内容弹出undefined (注意alert弹出的都是字符串) 2.document.write('内容') 在页面中输出显 ...
- 写给小白的常见三种加密方式:MD5,对称非对称加密
我们在做数据类传输产品或测试的过程中,总会听到开发说数据要加密,然后使用各种加密方式,那么希望通过本文,能够让大家对一些常见的加密方式有一些更加深入的了解,理解其中的底层逻辑. 今天介绍三种常见的加密 ...
- Android常用加密手段之MD5加密(字符串加密和文件加密)
前言 安全问题一直伴随着互联网的成长,如何有效地保护应用程序的数据是每一个开发者都应该考虑和努力的事情.这篇文章介绍Android平台上常用的加密方式之MD5加密. MD5 MD5即Message-D ...
- pcb 理论阻值、 过孔_超实用!PCB设计中过孔常用的6种处理方式
原标题:超实用!PCB设计中过孔常用的6种处理方式 小伙伴们我们又见面啦! 上一次的" 神仙过孔 ",还没过瘾吧? <整齐的过孔固然符合审美,但是却...> 今天的小课 ...
最新文章
- Kosaraju算法、Tarjan算法分析及证明--强连通分量的线性算法
- checkbox反复调用attr('checked', true/false)只有第一次生效
- 【干货】打造优秀B端产品需求分析流程要点
- [笔记]根据二代居名身份证号码判断一个人的性别
- 三阶段提交(Three-phase commit)
- HDU1865 1sting【递推】
- python截取某一段文字分栏_Python文本数据互相转换(pandas and win32com)
- 【路径规划】基于matlab遗传算法公交排班系统分析【含Matlab源码 220期】
- 贝叶斯公式的图形记忆
- Python 音频: sounddevice 使用 左声道/右声道/立体声 --- 播放,录音
- 内网穿透远程访问家里的群晖NAS 1-2
- Hashcat 使用教程
- 终极解决Excel科学计数、日期变#号等问题
- 前端获取视频帧率/帧数
- K-Fold交叉验证 原理+python实现
- BGP的路由优选规则
- PHP上传图片到服务器
- 《以道御术》荣耀上市,专家书评
- Chino with Rewrite
- 3226. 【HBOI2013】ALO