ホームページ  >  記事  >  パスワードの暗号化にはどのような方法がありますか?

パスワードの暗号化にはどのような方法がありますか?

青灯夜游
青灯夜游オリジナル
2022-06-30 16:45:4335141ブラウズ

パスワード暗号化方法には次のものが含まれます: 1. 対称暗号化アルゴリズム (3DES、AES など) を使用して暗号化します。この暗号化方法を使用すると、復号化によって元のパスワードを復元できます。もちろん、前提条件はキーを取得することです。 2. パスワードには一方向 HASH アルゴリズム (MD5、SHA1 など) を使用しますが、計算によって元のパスワードを復元することはできません。 3. パスワードには特別な一方向 HASH アルゴリズムを使用します。 4. 暗号化には PBKDF2 アルゴリズムを使用します。 5.暗号化には BCrypt アルゴリズムを使用します。 6. 暗号化には SCrypt アルゴリズムを使用します。

パスワードの暗号化にはどのような方法がありますか?

このチュートリアルの動作環境: Windows7 システム、DELL G3 コンピューター

Web 開発者として、私たちはユーザーのユーザーと対話する必要があることがよくあります。アカウント システム 最大の課題は、ユーザーのパスワードをどのように保護するかです。パスワードはWebサイトシステムにとって最も重要な盾であり、Webサイトシステムを城に例えるとパスワードは門にあたります。パスワードを安全に保存する方法と、MD5、SHA1、SHA256、PBKDF2、Bcrypt、Scrypt、Argon2、平文のどのアルゴリズムを使用するかについては、常に多くの議論があります。 ?

7 一般的なパスワード暗号化方法

ユーザーのパスワードを保護するにはどのような方法を使用する必要がありますか?パスワードを保存する一般的な方法は次のとおりです。

##アルゴリズム機能効果的なクラッキング方法クラッキングの難易度その他対称暗号化##平文を復号化できる復号化不可能解読不能衝突、レインボーテーブル中「塩」が漏洩しないようにする必要があるPbkdf2復号化不可能なし難しい適切なパラメータを設定する必要があるBCrypt復号化不可能No難しい適切なパラメータを設定する必要があります##SCrypt復号化不可能#難しい#適切なパラメータを設定する必要があります

#1. 対称暗号化アルゴリズムを使用して保存します

# 使用法:

★★☆☆☆ たとえば、3DES や AES などのアルゴリズムでは、この暗号化方法を使用して復号化することで元のパスワードを復元できますが、当然ながらキーを取得することが前提条件となります。しかし、大量のユーザー情報が漏洩しているため、鍵も漏洩する可能性が高く、一般的なデータと鍵を分けて保管・管理することはもちろん可能ですが、鍵を完全に保護することは非常に複雑であるため、これは良い意味ではありません。

#mermaid-svg-biP6VWlRGibFEX5h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid -svg-biP6VWlRGibFEX5h .error-icon{fill:#552222;}#mermaid-svg-biP6VWlRGibFEX5h .error-text{fill:#552222;ストローク:#552222;}#mermaid-svg-biP6VWlRGibFEX5h .edge-thickness-normal{ストローク幅:2px;}#mermaid-svg-biP6VWlRGibFEX5h .edge-thickness-thick{ストローク幅:3.5px;}#mermaid-svg-biP6VWlRGibFEX5h .edge-pattern-solid{ストローク-dasharray:0;}#mermaid -svg-biP6VWlRGibFEX5h .edge-pattern-dashed{ストローク-dasharray:3;}#mermaid-svg-biP6VWlRGibFEX5h .edge-pattern-dotted{ストローク-dasharray:2;}#mermaid-svg-biP6VWlRGibFEX5h .marker{fill:# 333333;ストローク:#333333;}#mermaid-svg-biP6VWlRGibFEX5h .marker.cross{ストローク:#333333;}#mermaid-svg-biP6VWlRGibFEX5h svg{font-family:"trebuchet ms",verdana,arial,sans-serif; font-size:16px;}#mermaid-svg-biP6VWlRGibFEX5h .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-biP6VWlRGibFEX5h .cluster-label text {fill:#333;}#mermaid-svg-biP6VWlRGibFEX5h .cluster-label スパン{color:#333;}#mermaid-svg-biP6VWlRGibFEX5h .label テキスト,#mermaid-svg-biP6VWlRGibFEX5h スパン{fill:#333;color: #333;}#mermaid-svg-biP6VWlRGibFEX5h .node 四角形、#mermaid-svg-biP6VWlRGibFEX5h .node 円、#mermaid-svg-biP6VWlRGibFEX5h .node ellipse、#mermaid-svg-biP6VWlRGibFEX5h .node ポリゴン、#mermaid- SVG-BI P6VWlRGibFEX5h .node パス{fill:#ECECFF;ストローク:#9370DB;ストローク幅:1px;}#mermaid-svg-biP6VWlRGibFEX5h .node .label{text-align:center;}#mermaid-svg-biP6VWlRGibFEX5h .node.clickable { カーソル:ポインター;}#マーメイド-svg-biP6VWlRGibFEX5h .arrowheadPath{fill:#333333;}#マーメイド-svg-biP6VWlRGibFEX5h .edgePath .path{ストローク:#333333;ストローク幅:2.0px;}#マーメイド-svg- biP6VWlRGibFEX5h .flowchart-link{ストローク:#333333;fill:none;}#mermaid-svg-biP6VWlRGibFEX5h .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-biP6VWlRGibFEX5h .edgeLabel 四角形{不透明度: 0.5;背景色:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-biP6VWlRGibFEX5h .clusterect{fill:#ffffde;ストローク:#aaaa33;ストローク幅:1px;}#mermaid-svg-biP6VWlRGibFEX5h 。クラスター テキスト{fill:#333;}#mermaid-svg-biP6VWlRGibFEX5h .cluster スパン{color:#333;}#mermaid-svg-biP6VWlRGibFEX5h p.mermaidTooltip{position:absolute;text-align:center;max-width:200px ; パディング:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px ソリッド #aaaa33;border-半径 :2px;ポインタ イベント:なし;z-インデックス:100;}#mermaid-svg-biP6VWlRGibFEX5h :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ##対称暗号化

##平文
#密文

#mermaid-svg-Yd8QoxqEgInkZ0dv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-サイズ:16px;fill:#333;}#mermaid-svg-Yd8QoxqEgInkZ0dv .error-icon{fill:#552222;}#mermaid-svg-Yd8QoxqEgInkZ0dv .error-text{fill:#552222;ストローク:#552222;}#マーメイド-svg-Yd8QoxqEgInkZ0dv .エッジの厚さ-標準{ストローク幅:2px;}#マーメイド-svg-Yd8QoxqEgInkZ0dv .エッジの厚さ-厚さ{ストローク幅:3.5ピクセル;}#マーメイド-svg-Yd8QoxqEgInkZ0dv .エッジパターン-solid{ストローク-dasharray:0;}#mermaid-svg-Yd8QoxqEgInkZ0dv .edge-pattern-dashed{ストローク-dasharray:3;}#mermaid-svg-Yd8QoxqEgInkZ0dv .edge-pattern-dotted{ストローク-dasharray:2;} #mermaid-svg-Yd8QoxqEgInkZ0dv .マーカー{fill:#333333;ストローク:#333333;}#mermaid-svg-Yd8QoxqEgInkZ0dv .marker.cross{ストローク:#333333;}#mermaid-svg-Yd8QoxqEgInkZ0dv svg{フォントファミリー:"投石機 ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Yd8QoxqEgInkZ0dv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333; }#mermaid-svg-Yd8QoxqEgInkZ0dv .cluster-label テキスト{fill:#333;}#mermaid-svg-Yd8QoxqEgInkZ0dv .cluster-label スパン{color:#333;}#mermaid-svg-Yd8QoxqEgInkZ0dv .label text,#mermaid- svg-Yd8QoxqEgInkZ0dv スパン{fill:#333;color:#333;}#mermaid-svg-Yd8QoxqEgInkZ0dv .node 長方形、#mermaid-svg-Yd8QoxqEgInkZ0dv .node 円、#mermaid-svg-Yd8QoxqEgInkZ0dv .node elli pse,#mermaid-svg -Yd8QoxqEgInkZ0dv .node ポリゴン,#mermaid-svg-Yd8QoxqEgInkZ0dv .node パス{fill:#ECECFF;ストローク:#9370DB;ストローク幅:1px;}#mermaid-svg-Yd8QoxqEgInkZ0dv .node .label{text-align:center; }#mermaid-svg-Yd8QoxqEgInkZ0dv .node.clickable{cursor:pointer;}#mermaid-svg-Yd8QoxqEgInkZ0dv .arrowheadPath{fill:#333333;}#mermaid-svg-Yd8QoxqEgInkZ0dv .edgePath .path{ストローク:#333333;ストローク- width:2.0px;}#mermaid-svg-Yd8QoxqEgInkZ0dv .flowchart-link{ストローク:#333333;fill:none;}#mermaid-svg-Yd8QoxqEgInkZ0dv .edgeLabel{background-color:#e8e8e8;text-align:center;} #mermaid-svg-Yd8QoxqEgInkZ0dv .edgeLabel 長方形{不透明度:0.5;背景色:#e8e8e8;塗りつぶし:#e8e8e8;}#mermaid-svg-Yd8QoxqEgInkZ0dv .cluster 長方形{塗りつぶし:#ffffde;ストローク:#aaaa33;ストローク幅:1px;}#mermaid-svg-Yd8QoxqEgInkZ0dv .cluster text{fill:#333;}#mermaid-svg-Yd8QoxqEgInkZ0dv .cluster スパン{color:#333;}#mermaid-svg-Yd8QoxqEgInkZ0dv p.mermaidTooltip{position:absolute; text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039% );border:1px ソリッド #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Yd8QoxqEgInkZ0dv :root{--mermaid-font-family:"trebuchet ms",ベルダナ、アリアル、サンセリフ;} ##对称解密

#密文

#明文

#

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;ストローク:#552222;}#mermaid-svg-PhUH3HjBVcURKO8J .edge-thickness-normal{ストローク幅:2px;}#マーメイド-svg-PhUH3HjBVcURKO8J .edge-thickness-thick{ストローク幅:3.5px;}#マーメイド-svg-PhUH3HjBVcURKO8J .edge-pattern-solid{ストローク-ダシャーレイ:0;}#マーメイド-svg-PhUH3HjBVcURKO8J .edge-pattern-dashed{ストローク-dasharray:3;}#mermaid-svg-PhUH3HjBVcURKO8J .edge-pattern-dotted{ストローク-dasharray:2;}#mermaid-svg-PhUH3HjBVcURKO8J .marker{fill:# 333333;ストローク:#333333;}#mermaid-svg-PhUH3HjBVcURKO8J .marker.cross{ストローク:#333333;}#mermaid-svg-PhUH3HjBVcURKO8J svg{font-family:"trebuchet ms",verdana,arial,sans-serif; font-size:16px;}#mermaid-svg-PhUH3HjBVcURKO8J .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-PhUH3HjBVcURKO8J .cluster-label text {fill:#333;}#mermaid-svg-PhUH3HjBVcURKO8J .cluster-label スパン{color:#333;}#mermaid-svg-PhUH3HjBVcURKO8J .label テキスト,#mermaid-svg-PhUH3HjBVcURKO8J スパン{fill:#333;color: #333;}#mermaid-svg-PhUH3HjBVcURKO8J .node 四角形、#mermaid-svg-PhUH3HjBVcURKO8J .node 円、#mermaid-svg-PhUH3HjBVcURKO8J .node ellipse、#mermaid-svg-PhUH3HjBVcURKO8J .nodeポリゴン、#mermaid-s vg- PhUH3HjBVcURKO8J .node パス{fill:#ECECFF;ストローク:#9370DB;ストローク幅:1px;}#mermaid-svg-PhUH3HjBVcURKO8J .node .label{text-align:center;}#mermaid-svg-PhUH3HjBVcURKO8J .node.clickable { カーソル:ポインター;}#マーメイド-svg-PhUH3HjBVcURKO8J .arrowheadPath{fill:#333333;}#マーメイド-svg-PhUH3HjBVcURKO8J .edgePath .path{ストローク:#333333;ストローク幅:2.0px;}#マーメイド-svg- PhUH3HjBVcURKO8J .flowchart-link{ストローク:#333333;fill:none;}#mermaid-svg-PhUH3HjBVcURKO8J .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-PhUH3HjBVcURKO8J .edgeLabel 四角形{不透明度: 0.5;背景色:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-PhUH3HjBVcURKO8J .clusterect{fill:#ffffde;ストローク:#aaaa33;ストローク幅:1px;}#mermaid-svg-PhUH3HjBVcURKO8J 。クラスター テキスト{fill:#333;}#mermaid-svg-PhUH3HjBVcURKO8J .cluster スパン{color:#333;}#mermaid-svg-PhUH3HjBVcURKO8J p.mermaidTooltip{position:absolute;text-align:center;max-width:200px ; パディング:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px ソリッド #aaaa33;border-半径 :2px;ポインタ イベント:なし;z-インデックス:100;}#mermaid-svg-PhUH3HjBVcURKO8J :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} #ハッシュ アルゴリズム

##平文#密文

#mermaid-svg-o0HmtD7977UNtnmR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-サイズ:16px;fill:#333;}#mermaid-svg-o0HmtD7977UNtnmR .error-icon{fill:#552222;}#mermaid-svg-o0HmtD7977UNtnmR .error-text{fill:#552222;ストローク:#552222;}# mermaid-svg-o0HmtD7977UNtnmR .エッジの厚さ-標準{ストローク幅:2px;}#mermaid-svg-o0HmtD7977UNtnmR .エッジの厚さ-厚み{ストローク幅:3.5px;}#mermaid-svg-o0HmtD7977UNtnmR .エッジパターン-solid{ストローク-dasharray:0;}#mermaid-svg-o0HmtD7977UNtnmR .edge-pattern-dashed{ストローク-dasharray:3;}#mermaid-svg-o0HmtD7977UNtnmR .edge-pattern-dotted{ストローク-dasharray:2;} #mermaid-SVG-O0HMTD79777777777777777777777777779779777IUNTNMR .MARTER.CROSS {STROKE:#333333;}#MERMAID-SVG-O0HMTD79773 : "投石機 ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-o0HmtD7977UNtnmR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333; }#mermaid-svg-o0HmtD7977UNtnmR .cluster-label テキスト{fill:#333;}#mermaid-svg-o0HmtD7977UNtnmR .cluster-label スパン{color:#333;}#mermaid-svg-o0HmtD7977UNtnmR .label text,#mermaid- svg-o0HmtD7977UNtnmR スパン{fill:#333;color:#333;}#mermaid-svg-o0HmtD7977UNtnmR .node 四角形、#mermaid-svg-o0HmtD7977UNtnmR .node 円、#mermaid-svg-o0HmtD7977UNtnmR 。ノード楕円、#mermaid-svg -o0HmtD7977UNtnmR .node ポリゴン,#mermaid-svg-o0HmtD7977UNtnmR .node パス{fill:#ECECFF;ストローク:#9370DB;ストローク幅:1px;}#mermaid-svg-o0HmtD7977UNtnmR .node .label{text-align:center; }#mermaid-svg-o0HmtD7977UNtnmR .node.clickable{カーソル:ポインタ;}#mermaid-svg-o0HmtD7977UNtnmR .arrowheadPath{fill:#333333;}#mermaid-svg-o0HmtD7977UNtnmR .edgePath .path{ストローク:#3333 33;ストローク- width:2.0px;}#mermaid-svg-o0HmtD7977UNtnmR .flowchart-link{ストローク:#333333;fill:none;}#mermaid-svg-o0HmtD7977UNtnmR .edgeLabel{background-color:#e8e8e8;text-align:center;} #mermaid-svg-o0HmtD7977UNtnmR .edgeLabel 四角形{不透明度:0.5;背景色:#e8e8e8;塗りつぶし:#e8e8e8;}#mermaid-svg-o0HmtD7977UNtnmR .cluster 四角形{塗りつぶし:#ffffde;ストローク:#aaaa33;ストローク幅:1px;}#mermaid-svg-o0HmtD7977UNtnmR .cluster テキスト{fill:#333;}#mermaid-svg-o0HmtD7977UNtnmR .cluster スパン{color:#333;}#mermaid-svg-o0HmtD7977UNtnmR p.mermaidTooltip{position:absolute; text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039% );border:1px ソリッド #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-o0HmtD7977UNtnmR :root{--mermaid-font-family:"trebuchet ms",ベルダナ、アリアル、サンセリフ;} ##無法还原

#密文

#明文

#

3. 特別な一方向 HASH アルゴリズム

使用法: ★★★☆☆

-way HASH アルゴリズムはパスワードを保護する上で安全ではなくなったため、一部の企業では、一方向 HASH アルゴリズムに基づいてソルト、マルチ HASH、その他の拡張機能を追加しており、これらの方法によりクラッキングの難易度がある程度向上します。 "fixed Salt" "HASH アルゴリズムは "ソルト" を漏洩から保護する必要がありますが、これは "対称キーの保護" と同じ問題に遭遇します。 "ソルト" が漏洩すると、レインボー テーブルはベースに基づいて再確立できます。複数の HASH の場合、クラッキング時間が増加するだけで、実質的には改善されません。

#ハッシュ アルゴリズム

##ソルト プレーンテキスト

密文

##無法还原

#密文

#明文

#

4, PBKDF2

使用法: ★★★★☆

このアルゴリズムの原理は次のとおりです。 HASH アルゴリズムに基づいて、ランダム ソルトが追加され、複数の HASH 操作が実行されます。ランダム ソルトはレインボー テーブルの作成の難易度を大幅に高め、複数の HASH はテーブルの作成とクラッキングの難易度も大幅に高めます。 PBKDF2 アルゴリズムを使用する場合、HASH アルゴリズムは通常 sha1 または sha256 を使用します。ランダム ソルトの長さは通常 8 バイト以上、HASH 回数は少なくとも 1,000 回である必要があり、セキュリティが十分に高くなります。パスワード検証プロセスでは 1000 回の HASH 操作が実行され、サーバーにとっては 1 ミリ秒しかかからないかもしれませんが、クラッカーにとっては計算コストが 1000 倍に増加し、少なくとも 8 バイトのランダム ソルトによりテーブル作成の難易度が N 倍増加します。このアルゴリズムは、米国国立標準技術研究所によっても推奨されています。

PB KDF2 は長い間存在しており、前の記事で説明したように少し時代遅れです。マルチコア システム (GPU) で並列処理を実現するのは簡単ですが、カスタム システムでは簡単です ( FPGA/ASIC) 。

複数の HASH アルゴリズム

#随机盐明文

密文

##mermaid-svg-WPZZSunyY9QGmqft {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333 ;}#マーメイド-svg-WPZZSunyY9QGmqft .error-icon{fill:#552222;}#mermaid-svg-WPZZSunyY9QGmqft .error-text{fill:#552222;ストローク:#552222;}#mermaid-svg-WPZZSunyY9QGmqft .edge-厚さ-標準{ストローク幅:2px;}#mermaid-svg-WPZZSunyY9QGmqft .edge-thickness-thick{ストローク幅:3.5px;}#mermaid-svg-WPZZSunyY9QGmqft .edge-pattern-solid{ストローク-ダシャーレイ:0 ;}#マーメイド-svg-WPZZSunyY9QGmqft .edge-pattern-dashed{ストローク-dasharray:3;}#mermaid-svg-WPZZSunyY9QGmqft .edge-pattern-dotted{ストローク-dasharray:2;}#mermaid-svg-WPZZSunyY9QGmqft .marker {fill:#333333;ストローク:#333333;}#mermaid-svg-WPZZSunyY9QGmqft .marker.cross{ストローク:#333333;}#mermaid-svg-WPZZSunyY9QGmqft svg{font-family:"trebuchet ms",verdana,arial, sans-serif;font-size:16px;}#mermaid-svg-WPZZSunyY9QGmqft .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-WPZZSunyY9QGmqft 。クラスターラベルテキスト{fill:#333;}#mermaid-svg-WPZZSunyY9QGmqft .cluster-labelスパン{color:#333;}#mermaid-svg-WPZZSunyY9QGmqft .labelテキスト,#mermaid-svg-WPZZSunyY9QGmqftスパン{fill:# 333;color:#333;}#mermaid-svg-WPZZSunyY9QGmqft .node 四角形、#mermaid-svg-WPZZSunyY9QGmqft .node 円、#mermaid-svg-WPZZSunyY9QGmqft .node 楕円、#mermaid-svg-WPZZSunyY9QGmqft .node ポリゴンゴン、#人魚-svg-WPZZSunyY9QGmqft .node パス{fill:#ECECFF;ストローク:#9370DB;ストローク幅:1px;}#mermaid-svg-WPZZSunyY9QGmqft .node .label{text-align:center;}#mermaid-svg-WPZZSunyY9QGmqft 。ノード.クリッカブル{カーソル:ポインタ;}#mermaid-svg-WPZZSunyY9QGmqft .arrowheadPath{fill:#333333;}#mermaid-svg-WPZZSunyY9QGmqft .edgePath .path{ストローク:#333333;ストローク幅:2.0px;}#mermaid -svg-WPZZSunyY9QGmqft .flowchart-link{ストローク:#333333;fill:none;}#mermaid-svg-WPZZSunyY9QGmqft .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-WPZZSunyY9QGmqft .edgeLabel rect{不透明度:0.5;背景色:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-WPZZSunyY9QGmqft .cluster rect{fill:#ffffde;ストローク:#aaaa33;ストローク幅:1px;}#mermaid-svg -WPZZSunyY9QGmqft .cluster テキスト{fill:#333;}#mermaid-svg-WPZZSunyY9QGmqft .cluster スパン{color:#333;}#mermaid-svg-WPZZSunyY9QGmqft p.mermaidTooltip{position:absolute;text-align:center;max-幅:200px;パディング:2px;フォントファミリー:"trebuchet ms"、verdana、arial、sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px 実線 #aaaa33 ;border-radius:2px;pointer-events: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 (ザグレブ大学) は、ハイブリッド ARM/FPGA を使用してこのアルゴリズムを攻撃するモノリシック システムについて説明する論文を 2014 年に執筆しました。
6、SCrypt

使用法: ★★★★☆

今日のSCrypt world はより良い選択です。BCrypt よりも設計が優れており (特にメモリに関して)、この分野で 10 年間取り組んでいます。一方で、多くの暗号通貨でも使用されており、それを実装できるハードウェア(FPGAやASICを含む)がいくつかあります。これらは特に採掘に使用されますが、クラッキングに再利用することもできます。

7、Argon2

使用法:

Argon2 に基づくAES 実装、最新の x64 および ARM プロセッサは、命令セット拡張で AES 実装を実装しているため、通常のシステムと攻撃者のシステム間のパフォーマンス ギャップが大幅に狭まっています。 Argon2 には 3 つの主要なバージョンがあります。

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) を推奨します。 Argon2 が利用できない場合は Scrypt が最適な選択肢ですが、サイドチャネル漏洩に関して同じ問題があることに注意してください。
  • 関連知識の詳細については、
FAQ

列をご覧ください。

##キーを取得 キーが漏洩していないことを確認する必要があります 一方向 HASH
衝突、レインボー テーブル ##特別なハッシュ
#なし
Argon2 復号化不可能 なし 難しい

以上がパスワードの暗号化にはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。