#Pythonのhashlibは、ように、MD5(MD5アルゴリズム)、SHA1として、共通のアルゴリズムの概要を提供します。要約:ダイジェスト #また、ハッシュアルゴリズム、ハッシュアルゴリズムとして知られているダイジェストアルゴリズム。 #これは、関数を介して、データ(平文)は、任意の固定長のデータ列(暗号文)(16進数、典型的には文字列表現)の長さに変換されます。 #ダイジェストアルゴリズムは、任意の長さのデータの固定長ダイジェストダイジェスト計算されたデータの関数f()によって消化され #元のデータが改ざんされたかどうかを発見するために。ダイジェストアルゴリズムは、データが、改ざんされているかどうかを示すことができる #、関数は一方向関数であるダイジェストF(データ)を計算するので簡単ですが、逆推力によりデータを消化することは非常に困難です。 #また、オリジナルデータへの変更のビットを行う、完全に異なるダイジェスト計算につながります。 #は、アルゴリズムは、暗号化に使用することができますが、消化するために注意を払うが、多くのオンラインサイトがある復号化することができ、クラックの発生の特定のリスクがあります。 #平文ユニークに対応した暗号文。一般的に(ファイルの整合性をチェック)は、コンピュータやWebサイトのパスワードに保存されたコントラストのログインパスワードとパスワードを使用。 #あなたがクリアテキスト(ユーザー名やパスワード)でパスワードを保存する場合は、データベースが侵害された場合、すべてのユーザーのパスワードは、ハッカーの手に落ちます。ハッカーは、ライブラリを打ちます。 #また、サイトの運用・保守担当者は、すべてのユーザーのパスワードを取得することが可能であるデータベースにアクセスすることができます。 #正しい方法はプレーンテキストでユーザーパスワードを保存しないパスワードを保存することであるが、MD5のようではなくサマリーストアのユーザパスワード、 #1. インポートhashlib MD5 = hashlib.md5()#1 MD5、SHA1を変更することができ、SHA1アルゴリズムをSHA256とSHA512よりも安全であるが、より安全なアルゴリズム遅く、そしてより長い長さを消化。 md5.update(B ' 136320 ' ) プリント(md5.hexdigest()) #のMD5値、32ビットの16進文字列であるd5d082d2642302fae506350fff337632、。 #2データの大量場合、ブロックは複数回更新()を呼び出すことができ、最終的な計算結果が同じである: インポートhashlib MD5 = hashlib.md5() md5.update(B 「13である」) md5.update(B ' 6320 ')#136 320が同じMD5のMD5値が重畳された6320個の値を持つ13。 印刷(md5.hexdigest()) #d5d082d2642302fae506350fff337632 #md5.update(b'136320 ') #の印刷(md5.hexdigest())d5d082d2642302fae506350fff337632# #3.登録されているユーザ、パスワード値はMD5です: インポートhashlibの ユーザ名 = INPUT(' ユーザー名:' ) パスワード = INPUT(' パスワード:' ) MD5 = hashlib.md5() #MD5はオブジェクトを取得し md5.update(バイト(パスワード、エンコード= ' UTF-8。")) #の暗号化を:md5.updateパスワードが md5.hexdigest =()md5_pwd #(取得値のMD5を暗号文) を開きます(と" ユーザ名・パスワード&'モード= ' W 'エンコード= ' UTF-8 ' Fとして): f.write(' %S&%S '%(ユーザ名、md5_pwd)) #4用户登录验证: インポートhashlibの ユーザ名 =入力(' ユーザー名:' ) パスワード =入力(' パスワード:' ) オープン(と' ユーザ名とパスワード'エンコード= ' UTF-8 ' )、F等の: のための行にF: ユーザPWDLine.split =(' &' ) MD5 = hashlib.md5() md5.update(バイト(パスワード、エンコード = ' UTF-8 ' )) #は、エンコード= 'UTF-8'、またはスローされます文字列を書きますエンコーディング引数なし md5_pwd = md5.hexdigest() IFユーザ名==ユーザーと md5_pwd == PWD: 印刷(「ログイン成功」) それ以外: 印刷(「アカウントまたはパスワードが間違っ」) #5.塩:塩ではないとしてMD5パスワード塩処理した後は、これまでのところ、ハッカーは、ユーザーがパスワードは簡単です入っても、知っている、プレーンテキストで抗MD5パスワードを押し通すことは困難であるが、分割する一定のリスクがあります。 インポートhashlib MD5は = hashlib.md5(バイト(' 塩'、エンコード= ' UTF-8 ')) #塩は、任意の文字であってもよいです。 md5.update(B ' 136320 ' ) プリント(md5.hexdigest())#1 dc740385c07799eefb7c1f1ae24050eeの #は後に添加された塩、MD5のd5d082d2642302fae506350fff337632値は、元と同じではありません。 #その後、塩は、他の文字を追加することができる:b'123「 インポートhashlib MD5 = hashlib.md5を(バイト(」塩「エンコード= 」UTF-8 ')+ B ' 123 ' ) md5.update(B ' 136320 ' ) プリント(md5.hexdigest())