#php 暗号化の役割
暗号化: データを暗号化するため、プレーン テキストは表示されません。 。 PHP の開発プロセスでは、多くの場合、一部のデータ (ユーザー パスワードなど) を暗号化する必要があります。1. 暗号化の種類:
1. 一方向ハッシュ暗号化は、固定長の出力を得るために任意の長さの情報をハッシュ計算することです。このハッシュ計算プロセスは一方向です。つまり、固定長の出力情報を取得することはできません。入力情報を取得するために計算されます。 (1) 特徴: アバランシェ効果、固定長出力、および不可逆性。 (2) この機能は、データの整合性を保証することです。 (3) 暗号化アルゴリズム: md5 (標準鍵長 128 ビット)、sha1 (標準鍵長 160 ビット)、md4、CRC-322. 対称ハッシュ暗号化対称暗号化とは、暗号化と復号化が同じキーを使用するか、相互に計算できることを意味します。 (1) 暗号化側と復号化側は同じ鍵を使用します。 (2) 暗号化・復号速度が比較的速く、長期のデータ利用に適しています。 (3) 鍵の送信プロセスは安全ではなく解読されやすく、鍵の管理も面倒です。 (4) 暗号化アルゴリズム: DES (Data Encryption Standard)、3DES、AES (Advanced Encryption Standard、128、192、256、および 512 ビット キーの暗号化をサポート)、Blowfish。 3. 非対称ハッシュ暗号化非対称暗号化と復号化では異なる鍵が使用されます。そのうちの 1 つは公開されており、公開鍵と呼ばれます。もう 1 つは所有者のみが知っており、公開鍵と呼ばれます。キーを秘密キーとして使用します。 (1) 各ユーザーは、暗号化用のキーのペア (公開キーと秘密キー) を所有します。 (2) 公開鍵暗号化、秘密鍵復号化、秘密鍵暗号化、公開鍵復号化。 (3) 公開キーの送信プロセスは安全ではなく、簡単に盗まれたり置き換えられたりする可能性があります。 (4) 公開鍵は鍵長が非常に長いため、暗号化速度が非常に遅く、一般には暗号化には使用されません。 (5) あるユーザーは自分の秘密鍵を使って暗号化し、他のユーザーは自分の公開鍵を使って復号することでデジタル署名の機能を実現します。 (6) 公開鍵暗号化のもう 1 つの機能は、鍵交換を実現することです。 (7) 暗号化および署名アルゴリズム: RSA、ELGamal。 (8) 公開鍵署名アルゴリズム: DSA。 注: (1) RSA: RSA 社によって発明された、可変長キーをサポートする公開キー アルゴリズムです。暗号化する必要があるファイル ブロックの長さも同様です。変数;(2) DSA (デジタル署名アルゴリズム): 標準 DSS (デジタル署名標準) のデジタル署名アルゴリズム; (3) 非対称暗号化アルゴリズムは対称暗号化アルゴリズムよりも高速に実行されるため暗号化アルゴリズムは非常に遅いため、大量のデータを暗号化する必要がある場合は、対称暗号化アルゴリズムを使用して暗号化と復号の速度を上げることをお勧めします。 対称暗号化アルゴリズムでは署名を実装できないため、署名は非対称アルゴリズムのみにすることができます。 (4) 対称暗号アルゴリズムの鍵管理は複雑なプロセスであるため、鍵の管理が安全性を直接決定するため、データ量が少ない場合には非対称暗号の使用を検討できます。アルゴリズムです。 (5) 実際の運用プロセスでは、非対称暗号アルゴリズムを使用して対称アルゴリズムの鍵を管理し、次に対称暗号アルゴリズムを使用してデータを暗号化するという方法が一般的です。この暗号化アルゴリズムの利点は、暗号化速度が速いという利点だけでなく、安全で便利な鍵管理という利点も実現していることです。2. PHP で一般的に使用される暗号化関数:
1.MD5 暗号化:string md5 ( string $str [, bool $raw_output = false ] )(1) md5() のデフォルトは 32 です。文字 16 進デジタル形式のハッシュ値。2 つのパラメータを受け入れます。1 つ目は暗号化する文字列で、2 つ目は raw_output のブール値です。デフォルトは false です。true に設定すると、md5( ) は、元の 16 ビット バイナリ形式のメッセージ ダイジェストを返します。 (2) md5() は一方向暗号化であり、逆復号アルゴリズムはありませんが、いくつかの共通の文字列、列挙、衝突、および#2.Crypt 暗号化をクラックする他の方法:
string crypt ( string $str [, string $salt ] )(1)crypt() は 2 つのパラメータを受け入れます。1 つ目は暗号化する必要がある文字列で、2 つ目はソルト値です (これは暗号化干渉値であり、指定しない場合はデフォルトで PHP によって自動的に生成されます); ハッシュ化された文字列または 13 文字未満の文字列を返します (後者はソルト値を区別するためのものです)。 (2)crypt() は md5 と同じ一方向暗号化です。 3.Sha1 暗号化:
string sha1 ( string $str [, bool $raw_output = false ])(1) は md5 と非常によく似ています。違いは、sha1() がデフォルトで 40 文字のハッシュ値を返すことと、パラメーターのプロパティを返すことです。 1 つ目は暗号化された文字列 2 つ目は raw_output のブール値、デフォルトは false、true に設定すると、sha1() は元の 20 ビットのオリジナル形式を返しますメッセージ ダイジェスト(2)sha1() も単一行暗号化であり、逆復号化アルゴリズムはありません4.Urlencode 暗号化:
string urlencode ( string $str )(1) 1 つのパラメータ、暗号化する文字列を渡します (通常は URL の暗号化に使用されます) (2) urlencode は双方向暗号化であり、urldecode で暗号化できます (厳密に言えば、これは実際の暗号化ではありません) (3) 文字列を返します。この文字列内の -_. を除くすべての非英数字は、パーセント記号 (%) とそれに続く 2 つの 16 進数に置き換えられ、スペースはプラス記号 ( ) としてエンコードされます。 (3) 一般的な urlencode() 変換文字
? => %3F = => %3D % => %25 & => %26 \ => %5C 空格 => %5C
5.base64编码加密:
string base64_decode ( string $encoded_data )
(1)base64_encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候base64用来编码图片)
(2)base64_encode()为双向加密,可用base64_decode()来解密
以上がPHP暗号化の役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。