目錄
常見的7種密碼加密方式
首頁 常見問題 密碼加密的方式有哪些

密碼加密的方式有哪些

Jun 30, 2022 pm 04:45 PM
加密方式

密碼加密的方式有:1、利用對稱加密演算法(例如3DES、AES)進行加密,使用這種方式加密是可以透過解密來還原出原始密碼的,當然前提條件是需要取得到金鑰;2、使用單向HASH演算法(例如MD5、SHA1)進行密碼,但無法透過計算還原出原始密碼;3、使用特殊的單向HASH演算法進行密碼;4、使用PBKDF2演算法進行加密;5、使用BCrypt演算法進行加密;6、以SCrypt演算法進行加密。

密碼加密的方式有哪些

本教學操作環境:windows7系統、DELL G3電腦

身為Web開發人員,我們經常需要與使用者的帳號系統打交道,而這其中最大的挑戰就是如何保護使用者的密碼。密碼是一個網站系統最重要的護盾,如果把網站系統比喻成城堡,那密碼就是城門。關於如何安全的儲存密碼以及使用何種演算法總是有很多的爭論:MD5、SHA1,SHA256、PBKDF2,Bcrypt、Scrypt、Argon2、明文? ?

常見的7種密碼加密方式

  我們該採用什麼方式來保護使用者的密碼呢?以下幾種方式是常見的密碼保存方式:

演算法#特徵有效破解方式破解難度其它對稱加密可以解密出明文取得金鑰中需要確保金鑰不洩漏單向HASH碰撞、彩虹表特殊HASH不可解密碰撞、彩虹表中需要確保「鹽」不洩漏Pbkdf2不可解密#無難需要設定合理的參數BCrypt不可解密無#需要設定合理的參數SCrypt#不可解密無
演算法 特點 有效破解方式

無法解密
##難
################ ##需要設定合理的參數############Argon2######不可解密######無#################### ##############

1、使用對稱加密算法來保存

使用情況: ★★☆☆☆

  例如3DES、AES等演算法,使用這種方式加密是可以透過解密來還原出原始密碼的,當然前提條件是需要取得到金鑰。不過既然大量的用戶資訊已經洩露了,密鑰很可能也會洩露,當然可以將一般資料和密鑰分開存儲、分開管理,但要完全保護好密鑰也是一件非常複雜的事情,所以這種方式並不是很好的方式。

對稱加密
       

#####################################################################################################################################。

##密文

########## #### #########################################密文######### ## ##########################明文############################ # #########

2、使用MD5、SHA1等單向HASH演算法保護密碼

使用情況: ★★★☆☆

##  使用這些演算法後,無法透過計算還原出原始密碼,而且實現比較簡單,因此很多互聯網公司都採用這種方式保存用戶密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。

#mermaid-svg-PhUH3HjBVcURKO8J {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid -svg-PhUH3HjBVcURKO8J .error-icon{fill:#552222;}#mermaid-svg-PhUH3HjBVcURKO8J .error-text{fill:#552222;stroke:#55222221822222222222;stroke:#55222221813822222223938303000m.P.P. stroke-width:2px;}#mermaid-svg-PhUH3HjBVcURKO8J .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PhUH3HjBVcURKO8J .edge-pattern-solid-svg-solid-solalk} -svg-PhUH3HjBVcURKO8J .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PhUH3HjBVcURKO8J .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svt-Ph 333333;stroke:#333333;}#mermaid-svg-PhUH3HjBVcURKO8J .marker.cross{stroke:#333333;}#mermaid-svg-PhUH3HjBVcURKO8J svg-tre-ffalzer; font-size:16px;}#mermaid-svg-PhUH3HjBVcURKO8J .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Pharial,sans-serif;color:#333;}#mermaid-svg-Pharial. {fill:#333;}#mermaid-svg-PhUH3HjBVcURKO8J .cluster-label span{color:#333;}#mermaid-svg-PhUH3HjBVcURKO8J .label text,#mermaid-svg-PhV338; #333;}#mermaid-svg-PhUH3HjBVcURKO8J .node rect,#mermaid-svg-PhUH3HjBVcURKO8J .node circle,#mermaid-svg-PhUH3HjBVcURKO8J .node gon,#mermaid-svg-PhUH3HjBVcURKO8J .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-PhUH3HjBVcURKO8J .node .label{text-align:center;}#mermaid-svg-UlickH3H.D. cursor:pointer;}#mermaid-svg-PhUH3HjBVcURKO8J .arrowheadPath{fill:#333333;}#mermaid-svg-PhUH3HjBVcURKO8J .edgePath .path{stroke:#333333300pVcURxd-V​​ExSU​​pwidw.33333302020202000p-V4202020202-V420202000p-V.S; J .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-PhUH3HjBVcURKO8J .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-PhUH38e8;text-align:center;}#mermaid-svg-PhUH38e. 0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-PhUH3HjBVcURKO8J .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px}#mermaid-Jpx;Jwidth:1px;Jwid-1px; text{fill:#333;}#mermaid-svg-PhUH3HjBVcURKO8J .cluster span{color:#333;}#mermaid-svg-PhUH3HjBVcURKO8J p.mermaidToip{position:abwsolute-alignx; padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #33; :2px;pointer-events:none;z-index:100;}#mermaid-svg-PhUH3HjBVcURKO8J :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

######################## ######################HASH演算法###        ######################################################################################################################################################################。

##密文

# 無法

#

##密文

#明文

# # #########

3、特殊的單向HASH演算法

使用情況: ★★★☆☆

  由於單向HASH演算法在保護密碼方面不再安全,於是有些公司在單向HASH演算法基礎上進行了加鹽、多次HASH等擴展,這些方式可以在一定程度上增加破解難度,對於加了「固定鹽」的HASH演算法,需要保護「鹽」不能洩露,這就會遇到「保護對稱金鑰」一樣的問題,一旦「鹽」洩露,根據「鹽」重新建立彩虹表可以進行破解,對於多次HASH ,也只是增加了破解的時間,並沒有本質上的提升。

HASH演算法
       

###鹽 明文###

##密文

##

##密文

#明文############################ # #########

4、PBKDF2

使用情況: ★★★★☆

  該演算法原理大致相當於在HASH演算法基礎上增加隨機鹽,並進行多次HASH運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。使用PBKDF2演算法時,HASH演算法一般選用sha1或sha256,隨機鹽的長度一般不能少於8字節,HASH次數至少也要1000次,這樣安全性才夠高。一次密碼驗證過程進行1000次HASH運算,對伺服器來說可能只需要1ms,但對於破解者來說計算成本增加了1000倍,而至少8字節隨機鹽,更是把建表難度提升了N個數量級,使得大批量的破解密碼幾乎不可行,該演算法也是美國國家標準與技術研究院建議使用的演算法。

  PBKDF2 已經存在很長時間了,像之前文章討論的一樣,它有點過時了:輕鬆的在多核系統(GPU)上實現並行,這對於定制系統(FPGA/ASIC)來說微不足道。

####多次HASH演算法###        ####

#隨機鹽明文

密文

#mermaid-svg-WPZZSunyY9QGmqft {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333 ;}#mermaid-svg-WPZZSunyY9QGmqft .error-icon{fill:#552222;}#mermaid-svg-WPZZSunyY9QGmqft .error-text{fill:#5522222;厚度正常{描邊寬度:2px;}#mermaid-svg-WPZZSunyY9QGmqft .edge-thickness-thick{描邊寬度:3.5px;}#mermaid-svg-WPZZSunyY9QGmqft .edge-pattern-solid-dashar-das ;}#mermaid-svg-WPZZSunyY9QGmqft .edge-pattern-dashed{行程-dasharray:3;}#mermaid-svg-WPZZSunyY9QGmqft .edge-pattern-dotted{Qhmh-2; {填充:#333333;行程:#333333;}#mermaid-svg-WPZZSunyY9QGmqft .marker.cross{行程:#333333;}#mermaid-svg-WPZZSunyY9QGmqft svg{-familym sans-serif;font-size:16px;}#mermaid-svg-WPZZSunyY9QGmqft .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZM.簇標籤文字{fill:#333;}#mermaid-svg-WPZZSunyY9QGmqft .cluster-label span{color:#333;}#mermaid-svg-WPZZSunyY9QGmqft .label 文本,#mermaid-svg-WPZ ;color:#333;}#mermaid-svg-WPZZSunyY9QGmqft .node 長方形,#mermaid-svg-WPZZSunyY9QGmqft .node 圓,#mermaid-svg-WPZZSunyY9QGmqft .nodem.Amhm. maid - svg-WPZZSunyY9QGmqft .node 路徑{填色:#ECECFF;行程:#9370DB;行程寬度:1px;}#mermaid-svg-WPZZSunyY9QGmqft .node .label{文字對齊:中心;Sunqm-dv. {遊標:指針;}#mermaid-svg-WPZZSunyY9QGmqft .arrowheadPath{fill:#333333;}#mermaid-svg-WPZZSunyY9QGmqft .edgePath .path{行程:#3333333; .flowchart-link{描邊:#333333;fill:none;}#mermaid-svg-WPZZSunyY9QGmqft .edgeLabel{背景顏色:#e8e8e8;text-align:center;}#mermaid-svg-WPZZSunyY9.GWPZZ :0.5;背景顏色:#e8e8e8;填滿:#e8e8e8;}#mermaid-svg-WPZZSunyY9QGmqft .cluster 長方形{填色:#ffffde;描邊:#aaaa33;描邊寬度:1px;}#mermaid-svg -ZWPZSunq. cluster 文字{fill:#333;}#mermaid-svg-WPZZSunyY9QGmqft .cluster span{color:#333;}#mermaid-svg-WPZZSunyY9QGmqft p.mermaidTooltip{位置:絕對最大文字:中心位-絕對;填充:2px;字體系列:“trebuchet ms”,verdana,arial,sans-serif;字體大小:12px;背景:hsl(80,100%,96.2745098039%);邊框:1px實心#aaaa33 ;border-radius:2px ;指標事件:none;z-index:100;}#mermaid-svg-WPZZSunyY9QGmqft :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif; }

#無法還原#

###################################密文###

#明文

##5、BCrypt

使用情況:

★★★ ★☆  BCrypt 在1999年就產生了,並且在對抗GPU/ASIC 方面要優於PBKDF2,但是我還是不建議你在新系統中使用它,因為它在離線破解的威脅模型分析中表現並不突出。儘管有一些數位加密貨幣依賴它(即:NUD),但它並沒有因此獲得較大的普及,因此,FPGA/ASIC 社群也沒有足夠的興趣來建構它的硬體實現。話雖如此,Solar Designer(OpenWall)、Malvoni 和 Knezovic(薩格勒布大學)在 2014 年撰寫了一篇論文,這篇文章描述了一種混合使用 ARM/FPGA 的單晶片系統來攻擊該演算法。

6、SCrypt

#使用情況:

★★★★☆  SCrypt 在如今是一個更好的選擇:比BCrypt設計得更好(尤其是關於記憶體方面)並且已經在該領域工作了10 年。另一方面,它也被用於許多加密貨幣,我們有一些硬體(包括 FPGA 和 ASIC)可以實現它。儘管它們專門用於採礦,但也可以將其重新用於破解。

7、Argon2

  • 使用情況:
  • ★★★★★
  •   Argon2 基於AES實現,現代的x64 和ARM 處理器已經在指令集擴展中實現了它,從而大大縮小了普通系統和攻擊者係統之間的性能差距,

  Argon2 有三個主要的版本:

Argon2i 是對抗側通道攻擊的最安全選擇,Argon2i 使用與資料無關的記憶體訪問,這是密碼哈希的首選方法,Argon2i 對記憶體進行了更多的傳遞,以防止權衡攻擊的發生。

Argon2d 是抵抗 GPU 破解攻擊的最安全選擇,並且Argon2 在 2015 年 7 月贏得了密碼哈希競賽。 Argon2d 使用依賴資料的記憶體訪問,這使得它很適合用於加密數位貨幣和工作量證明的應用程序,而不會受到側信道定時攻擊的威脅。

Argon2id 在記憶體第一次迭代的前半部充當 Argon2i,其餘部分則充當 Argon2d。因此,基於時間、 空間的平衡,它既提供了側通道攻擊保護也節約了暴力開銷。   如果你擔心側通道攻擊(例如:惡意資料快取載入/幽靈漏洞,它允許透過基於快取的側通道讀取同一硬體上其他正在運行的進程的私有記憶體資料),你應該使用Argon2i,否則使用Argon2d。如果你不確定或你對混合方法感到滿意,你可以使用 Argon2id 來獲得兩個方面的優勢。

  原始程式碼可以在 Github 上取得,使用相容 C89 的 C 語言編寫,並在知識共享授權協議下取得許可,並且可以在大多數 ARM、x86 和 x64 架構的硬體上編譯。

###溫馨提醒######:######  在2019 年之後,就有相關專家提出建議盡量不要使用PBKDF2 或BCrypt,並強烈建議將Argon2(最好是Argon2id)用於最新系統。而Scrypt 是 Argon2 不可用時的不二選擇,但要記住,它在側側通道洩漏方面也存在相同的問題。 ######更多相關知識,請造訪###常見問題###欄位! ###

以上是密碼加密的方式有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1594
276
如何修復'此設備未正確配置。(代碼1)” 如何修復'此設備未正確配置。(代碼1)” Aug 02, 2025 am 04:33 AM

設備管理器顯示感嘆號通常因硬件連接問題或驅動異常導致,解決方法如下:1.檢查設備連接與供電,確保插拔牢固並使用帶電HUB或更換接口;2.更新或回滾驅動程序,通過設備管理器或官網獲取最新驅動;3.清理舊設備殘留信息,卸載隱藏設備並重新識別;4.謹慎修改註冊表,備份後刪除異常項;若仍無法解決可嘗試重裝系統。

如何修復Microsoft Office錯誤代碼30183-27 如何修復Microsoft Office錯誤代碼30183-27 Jul 28, 2025 am 12:14 AM

錯誤代碼30183-27通常由權限不足或系統衝突引起。 1.以管理員身份運行安裝程序,並檢查下載文件是否被鎖定;2.清理系統的臨時文件夾(%temp%、temp、AppData\Local\Temp)並釋放磁盤空間;3.暫時關閉殺毒軟件或防火牆以防干擾安裝;4.使用微軟官方修復工具如MicrosoftSupportandRecoveryAssistant或Office部署工具(ODT)進行排查和安裝;5.嘗試重啟計算機後再安裝。按照上述步驟依次處理,多數情況下可解決該問題。

如何修復'當前沒有可用的電源選項” 如何修復'當前沒有可用的電源選項” Jul 27, 2025 am 01:22 AM

首先運行電源疑難解答,然後使用管理員命令提示符執行powercfg-restoredefaultschemes命令重置電源方案,接著更新或重新安裝ACPI驅動程序,檢查組策略設置(僅限專業版/企業版),運行sfc/scannow修復系統文件,並通過創建新用戶賬戶判斷是否為用戶配置文件問題,多數情況下電源選項會恢復正常。

如何修復錯誤代碼0x80070017 如何修復錯誤代碼0x80070017 Aug 02, 2025 am 04:20 AM

Windows更新錯誤0x80070017通常由系統文件、緩存或磁盤錯誤引起,並非一定是硬盤損壞。解決方法如下:1.使用SFC和DISM工具修復系統文件,依次運行sfc/scannow及DISM命令;2.清除WindowsUpdate緩存,停止服務後刪除SoftwareDistribution文件夾內容;3.運行chkdsk檢查磁盤錯誤,可在圖形界面或命令提示符中執行;4.更新或回滾驅動程序,尤其是存儲控制器和硬盤驅動。多數情況下通過前三種方法即可解決,若仍無法處理,則可能是硬件問題或需重裝系統

如何修復任務調度程序不運行任務 如何修復任務調度程序不運行任務 Jul 30, 2025 am 01:54 AM

checkThetergergerSettingStoensureTheTheTheyEnabledand和correctlyConfiguredWhtherightDate,time,andRecurrence; 2. verifyTheActionSettings,包括correctprogram/scriptspathsandpathsandpathsandproper internterpreterusage,尤其是forscriptssissississississississusingpowershell.exewith.exewith-exewith-exewith-execiutionpolicelyb

手機打電話沒聲音是怎麼回事 手機打電話沒聲音是怎麼回事 Aug 13, 2025 pm 06:09 PM

手機打電話沒聲音的原因有:硬件問題(揚聲器損壞、聽筒孔堵塞、連接器接觸不良)、軟件問題(音量設置太低、靜音模式開啟、系統故障)、網路問題(信號強度弱、網路擁塞)、其他原因(藍牙耳機已連接、應用程序干擾)。解決方案包括:檢查硬件、調整音量設置、關閉靜音模式、重啟手機、更新系統、斷開藍牙耳機、卸載有問題的應用程序,如果仍無法解決,請聯繫技術支持。

電話不敲響來電 電話不敲響來電 Aug 08, 2025 am 10:43 AM

Checkifsilentmodeisenabled—flipthering/silentswitchoniPhoneoradjustvolumesettingsonAndroidtoensuretheringerison.2.VerifyDoNotDisturborFocusModeisn’tactiveandreviewsettingstoallowcallsfromcontacts.3.Confirmthecallerisn’tblockedandcallforwardingisdisab

如何修復錯誤0x800F081F 如何修復錯誤0x800F081F Aug 02, 2025 am 01:13 AM

遇到Windows更新錯誤0x800f081f的解決方法包括:1.使用DISM和SFC工具修復系統文件,運行DISM/Online/Cleanup-Image/ScanHealth、DISM/Online/Cleanup-Image/RestoreHealth和sfc/scannow命令;2.檢查並重置更新源設置,通過組策略編輯器確認“指定IntranetMicrosoft更新服務位置”配置,或重置WindowsUpdate服務與緩存;3.手動下載並安裝所需組件,如.NETFramework或M