md5和password_hash孰好孰壞

md5自不必說,想必所有phper都用過,但另一個加密函數不知道你見過沒有

他就是password_hash();

加密方式更全面.使用起來也比md5+salt這種方式要簡潔很多,最主要的是難破解,因為它每時每刻都在變動

它的使用方式大致是這樣

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 = '123456';
//將用戶登錄時提交的密碼與用戶注冊時提交的密碼進行對比
$re = password_verify($pass_user,$pass);
if ($re) {echo "密碼真確";
} else {echo "密碼錯誤";
}

如果兩次輸入的密碼不一樣,就會輸出密碼錯誤

總結:password_hash函數用來加密密碼無疑很好用,而且,他還有第三個可選參數,為密碼的加密再加一層保障,比如:

?

//用戶注冊時提交的密碼
$pass_user_commit = '123456';
//對用戶提交的密碼進行password_hash加密,并存儲到數據庫
$option = array('cost'=>10);//cost,用來指明算法遞歸的層數
$pass = password_hash($pass_user_commit,PASSWORD_BCRYPT,$option);
echo $pass;
//第一次輸出生成的密碼:$2y$10$s78CmhptXOj1oYygCAQPNed.lMFqPBAQpJJXek5nf01pMc46gMLCu
//第二次輸出生成的密碼:$2y$10$LoXFBGwuLbAs9CvZ/4usT.jLVgKpUnTBCDRODRJXsC3BkTi3Ci.bC
//由此可見,由password_hash函數生成的密碼是動態的,破解幾乎很難//用戶登錄時提交的密碼
$pass_user = '123456';
//將用戶登錄時提交的密碼與用戶注冊時提交的密碼進行對比
$re = password_verify($pass_user,$pass);
if ($re){echo "密碼正確";
}else{echo "密碼錯誤";
}

具體參數詳解:?php.net

但卻存在以下問題

1. 版本要求 ?php版本必須5.5+ (如果做接口對接,要求雙方php版本都在5.5以上,會不會有一些不太現實)

2. 通過password_hash加密的密碼基本只能通過php的函數password_verify來校驗(這樣和其他語言交互時會不會很麻煩呢)

所以呢,如果php自家用,我感覺password_hash真的是一個不錯的選擇,但如果和其他語言或者外界交互的話,可能就會出現一些小麻煩

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282599.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Logstash 命令行參數

Logstash 提供了一個 shell 腳本叫 logstash 方便快速運行。它支持以下參數: -e意即執行。我們在 “Hello World” 的時候已經用過這個參數了。事實上你可以不寫任何具體配置,直接運行 bin/logstash -e ” 達到相同效果。這個參數的默認值是下面這樣&…

上汽拒絕HW符合商業邏輯

不久前,上汽董事長陳虹表示“與HW合作自動駕駛是不可接受的。這就好比一家公司為我們提供整體的解決方案,如此一來,它就成了靈魂,而上汽就成了軀體。對于這樣的結果,上汽是不能接受的,要把靈魂掌握在自己手…

javac compiling error ( mising package)

javac 編譯java源文件時,提示 package does not exist 的錯誤 Test.java import java.security.MessageDigest; import org.apache.commons.codec.binary.Hex;public class Test{public static void main(String args[]){boolean isAlarmed true;boolean aa isAla…

使用ffmpeg錄音

官方教程:http://ffmpeg.org/ffmpeg.html 錄音方法: 開始找到了這個方法,但是不行呀,好像是沒有這個oss吧。 oss 是linux 下的聲音相關的東西,與alsa 一樣,不過oss 是商業的, 而/dev/dsp 是oss …

Mysql慢查詢日志的使用 和 Mysql的優化

一、生成實驗數據 原理:sql 蠕蟲復制(這種生成數據方式同樣適用于數據表中有主鍵的情況)。 insert into comic (name,pen_name,cover) select name,pen_name,cover from comic 二、慢查詢日志設置 當語句執行時間較長時,通過日…

Oracle 12C CDB、PDB常用管理命令

--查看PDB信息(在CDB模式下) show pdbs --查看所有pdb select name,open_mode from v$pdbs; --v$pdbs為PDB信息視圖 select con_id, dbid, guid, name , open_mode from v$pdbs; --切換容器 alter session set containerorcl1 --切換到PDBorcl1容器…

指定時間的月初和月末一天的寫法

DateTime dt Convert.ToDateTime("2017-2");DateTime FirstDay new DateTime(dt.Year, dt.Month, 1);//本月初1號DateTime LastDay new DateTime(dt.AddMonths(1).Year, dt.AddMonths(1).Month, 1).AddDays(-1);//下月初1號減一天本月底 轉載于:https://www.cnblo…

mysql數據表設計要點以及快門

一個sql表的設計首先要考慮的是字段 然后去考慮這個字段應該具有哪些特性, 最后,考慮哪些字段經常用于查詢,設置為索引 下面是一個比較簡單的例子,大概說明了怎么樣去構造sql語句創建一個sql表 create table user_message( id int UNSIGNED not null auto_increment COMMEN…

分享實錄|區塊鏈技術與智能合約入門(開發實例)

1 什么是區塊鏈 1.1白話講解區塊鏈 現在區塊鏈特別火,可能大家都聽說過區塊鏈,聽說過比特幣,那到底什么是區塊鏈? 前幾天和一個朋友擼串,我給他安利區塊鏈和比特幣以及一些數字貨幣的知識,這個朋友也是一個…

大型網站技術架構:核心原理與案例分析筆記

1.大型網站軟件系統的特點: 高并發,大流量  高可用 海量數據  用戶分布廣泛,網絡情況復雜  安全環境惡劣  需求快速變更,發布頻繁  漸進式發展  2.大型網站演變架構 1)初步應用:數據(數據…

1777:文件結構“圖”

1777:文件結構“圖” 查看提交統計提問總時間限制: 1000ms內存限制: 65536kB描述在計算機上看到文件系統的結構通常很有用。Microsoft Windows上面的"explorer"程序就是這樣的一個例子。但是在有圖形界面之前,沒有圖形化的表示方法的,那時候最…

thinkphp出現Call to undefined function Think\C() in ... online 313

造成這個問題的原因很多,在這里我只說明我自己遇到之后解決的辦法 我將functions.php改成了function.php之后,修改了一些其他無關緊要的東西出現了這個問題,來回排查,各種嘗試,最后,將function.php改回functions.php,可以正常運行

Oracle數據庫IP訪問限制(IP白名單黑名單)

1、編輯sqlnet.ora內容為:#允許訪問的IP(白名單)TCP.INVITED_NODES(127.0.0.1,192.168.56.109,ip2,ip3,..,..本地IP..)若使用白名單,必須有本地IP,否則監聽會起不來#不允許訪問的IP(黑名單)#TCP…

WPF效果第一百九十九篇之Gamma曲線

前面效果中分享了模塊對比;今天大周末那就再來分享一下最近實現的效果;基于YX^n公式根據不同的系數繪制Gamma曲線效果如下圖:1、曲線的話,咱就用最簡單的方式繪制一堆點:PathFigure pathFigure new PathFigure(){StartPoint new Point(0, count),};for(double x 0; x < 1…

圖片序列化和反序列化成圖片文件(代碼)

// // ViewController.m // 圖片序列化和反序列化 // // Created by Qlinchao on 17/3/14. // Copyright © 2017年 QLC. All rights reserved. //#import "ViewController.h"interface ViewController () property (weak, nonatomic) IBOutlet UIImageView …

windows 下 MyEclipse 逆向工程生成hiberate 對應配置文件以及 javaBean。

步驟1&#xff1a; 右邊工具欄 -> 右擊你的項目 -> 選中 MyEclipse -> Project Facets -> install Hibernate Facet -> 選擇對應的版本&#xff08;以及一些你想要的配置&#xff09; 步驟2&#xff1a; 導航欄 -> window -》 show View -> Other 。 然…

php加解密

一 對稱加密 1.mycyrpt的對稱加密: /*** param $key //數據加密密鑰 由自己定義,長度有限制 string* param $string //需要進行加解密的字符串 string* param $decrypt //加密還是解密 (最簡單的,0代表加密,1代表解密)* return string*/ function encryptDecrypt($key, $st…

深入理解Spring Boot數據源與連接池原理

? Create by ysterfoxmail.com 2018-8-2一&#xff1a;開始 在使用Spring Boot數據源之前&#xff0c;我們一般會導入相關依賴。其中數據源核心依賴就是spring‐boot‐starter‐jdbc 如下 <dependency><groupId>org.springframework.boot</groupId> …

Dapr 集成 Open Policy Agent 實現 接口的訪問控制

大型項目中基本都包含有復雜的訪問控制策略&#xff0c;特別是在一些多租戶場景中&#xff0c;例如Kubernetes中就支持RBAC&#xff0c;ABAC等多種授權類型。Dapr 的 中間件 Open Policy Agent 將Rego/OPA策略應用到傳入的Dapr HTTP請求中。Open Policy AgentOpen Policy Agent…

【Java】BigDecimal

一、前言 在使用Java&#xff0c;double 進行運算時&#xff0c;經常出現精度丟失的問題&#xff0c;總是在一個正確的結果左右偏0.0000**1。 特別在實際項目中&#xff0c;通過一個公式校驗該值是否大于0&#xff0c;如果大于0我們會做一件事情&#xff0c;小于0我們又處理其他…