Python 暗号化および復号化モジュール hashlib の 7 つの暗号化アルゴリズムの一覧

Python 暗号化および復号化モジュール hashlib の 7 つの暗号化アルゴリズムの一覧

[[393258]]

序文

プログラムでは、MD5 sha1 など、多くの暗号化アルゴリズムをよく見かけます。今日は、これらの暗号化アルゴリズムについて学びます。理解する前に、hashlib というモジュールについて知っておく必要があります。これは、現在 Python で文字の暗号化を提供しているモジュールです。暗号化する文字タイプはバイナリ エンコーディングであるため、文字列を直接暗号化するとエラーが発生します。

  1. ハッシュライブラリをインポートする
  2. string = '90年代の意地悪な少年'  
  3. #エンコードを使用して変換する
  4. sha1 = ハッシュライブラリ.sha1()
  5. sha1.update (文字列.encode( 'utf-8' ))
  6. res = sha1.hexdigest()
  7. print( "エンコード変換結果を使用して sha1 暗号化: " , res)
  8. #バイトを使用してバイナリに変換する
  9. sha1 = ハッシュライブラリ.sha1()
  10. sha1.update (バイト(文字列、エンコーディング= 'utf-8' ))
  11. res = sha1.hexdigest()
  12. print( "byteを使用したsha1変換の結果:" , res)

hashlib 内のすべてのハッシュ アルゴリズムのセットを取得するには、次の 2 つの方法のいずれかを使用できます。

  1. ハッシュライブラリをインポートする
  2. a=hashlib.algorithms_available
  3. b=hashlib.algorithms_guaranteed
  4. 印刷(a)
  5. 印刷(b)

以下では、一般的に使用される集中アルゴリズムを選択して説明します。

1. MD5

MD5 は Message-Digest Algorithm 5 の略で、情報伝送の整合性と一貫性を確保するために使用されます。コンピュータで広く使われているハッシュアルゴリズム(要約アルゴリズム、ハッシュアルゴリズムとも訳される)の一つで、主流のプログラミング言語ではMD5が一般的に実装されています。ハッシュ アルゴリズムの基本原理は、データ (漢字など) を別の固定長の値に変換することです。MD5 の前身には、MD2、MD3、MD4 があります。

MD5 アルゴリズムには次の特性があります。

1. 圧縮: 任意の長さのデータに対して、計算された MD5 値の長さは固定されます。

2. 計算が簡単: 元のデータから MD5 値を計算するのは簡単です。

3. 改ざん防止: 元のデータに変更を加えると、たとえ 1 バイトだけ変更されたとしても、取得される MD5 値に大きな違いが生じます。

4. 強力な衝突防止: 元のデータとその MD5 値がわかっている場合、同じ MD5 値を持つデータ (つまり、偽造されたデータ) を見つけることは非常に困難です。

MD5 の機能は、デジタル署名ソフトウェアを使用して秘密鍵に署名する前に、大量の情報を機密形式に「圧縮」することです (つまり、任意の長さのバイト文字列を特定の長さの 16 進数字文字列に変換します)。 MD5 は最も一般的なダイジェスト アルゴリズムです。非常に高速で、通常は 32 ビットの 16 進文字列で表される固定の 128 ビット バイトの結果を生成します。

  1. ハッシュライブラリをインポートする
  2. string = '90年代の意地悪な少年'  
  3. md5 = ハッシュライブラリ.md5()
  4. md5.update (string.encode( 'utf-8' ))#トランスコーディング、更新のデータはバイト型である必要があります
  5. res = md5.hexdigest() #文字の要約情報を返します
  6. print(md5.digest())#バイトサマリー情報を返します
  7. print( "md5暗号化結果:" , res)

2. シャ1

セキュア ハッシュ アルゴリズム SHA1 の結果は 160 ビットで、通常は 40 ビットの 16 進文字列で表されます。

  1. ハッシュライブラリをインポートする
  2. string = '90年代の意地悪な少年'  
  3. sha1 = ハッシュライブラリ.sha1()
  4. sha1.update (文字列.encode( 'utf-8' ))
  5. res = sha1.hexdigest()
  6. print( "sha1暗号化結果:" , res)

3. sha224

セキュアハッシュアルゴリズム

  1. ハッシュライブラリをインポートする
  2. string = '90年代の意地悪な少年'  
  3. sha224 = ハッシュライブラリ.sha224()
  4. sha224.update (文字列.encode( 'utf-8' ))
  5. res = sha224.hexdigest()
  6. print( "sha224暗号化結果: " ,res)

4. sha256

セキュアハッシュアルゴリズム

  1. ハッシュライブラリをインポートする
  2. string = '90年代の意地悪な少年'  
  3. sha256 = ハッシュライブラリ.sha256()
  4. sha256.update (文字列.encode( 'utf-8' ))
  5. res = sha256.hexdigest()
  6. print( "sha256暗号化結果: " ,res)

5. sha384

セキュアハッシュアルゴリズム

  1. ハッシュライブラリをインポートする
  2. string = '90年代の意地悪な少年'  
  3. sha384 = ハッシュライブラリ.sha384()
  4. sha384.update (文字列.encode( 'utf-8' ))
  5. res = sha384.hexdigest()
  6. print( "sha384暗号化結果: " ,res)

6. sha512

セキュアハッシュアルゴリズム

  1. ハッシュライブラリをインポートする
  2. string = '90年代の意地悪な少年'  
  3. sha512 = ハッシュライブラリ.sha512()
  4. sha512.update (文字列.encode( 'utf-8' ))
  5. res = sha512.hexdigest()
  6. print( "sha512暗号化結果: " ,res)

7. 高度な暗号化

上記の暗号化アルゴリズムは依然として非常に強力ですが、データベースの衝突によって元に戻される可能性があるという欠陥がまだあります。したがって、暗号化する前に暗号化アルゴリズムにカスタム キーを追加する必要があります。

  1. md5 = ハッシュライブラリ.md5()
  2. md5.update ( 'md5'.encode ( 'utf-8' ))
  3. res = md5.hexdigest()
  4. print( "通常の暗号化:" ,res)
  5. md51 = hashlib.md5(b 'md512' ) です。
  6. md51.update ( 'md51'.encode ( 'utf-8' ))
  7. res = md51.hexdigest()
  8. print( "キーを使用して暗号化されました:" , res)

要約する

さて、今日はここまでです。主にmd5、sha1、sha224、sha256、sha384、sha512、高度な暗号化などの集中アルゴリズムを紹介しました。各アルゴリズムの特徴と使い方を簡単に紹介しました。次回の盛り上がりをお楽しみに!

<<:  Java プログラミング スキル - データ構造とアルゴリズム「ソート アルゴリズムの分類と紹介」

>>:  検討する価値がある: 197 億ドル、2021 年のマイクロソフトの AI 変革の道筋

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

信頼できるAIの基礎は、適切なタイミングで適切なデータを得ることです

私たちは人工知能の存在に慣れ始めており、生成型人工知能(GenAI)の普及により、人工知能が世界に与...

旅行を恥ずかしがる必要はありません。国内の観光地がAIを導入し、スマートな旅行の新たなシナリオを実現

旅行に出かけることは、祖国の美しい川や山を鑑賞し、「詩と遠い場所」を追求することです。 AIの助けに...

...

...

エッジコンピューティングとエッジ AI とは何ですか?この2つの違いは何でしょうか?

AIチップはクラウドとエッジに分かれています。クラウドチップは高いパフォーマンスが求められますが、...

民間ドローンの産業応用シナリオに関する簡単な議論

[[357620]]科学技術の発展に伴い、人類は機械工学、材料科学、電子技術、自動制御、コンピュータ...

...

モノのインターネットにおける人工知能の役割

私たちの周りのあらゆるものがどうしてこんなにスマートになったのか、不思議に思ったことはありませんか?...

...

顔認識エンジンのトップ 5 (テキストにイースター エッグあり)

[51CTO.com クイック翻訳] ご存知のとおり、顔の特徴は指紋ほどユニークで永続的ではありま...

多くの競争者が競い合う中、自動運転をめぐる戦いが始まる!

著者: 張傑[51CTO.comより引用] 2020年と比べると、2021年の自動運転業界にはよりエ...

...