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 変革の道筋

ブログ    

推薦する

CV の未来はこの 68 枚の写真にかかっているのでしょうか? Google BrainがImageNetを深く掘り下げる:トップモデルはすべて予測に失敗する

過去10年間、ImageNetは基本的にコンピュータービジョン分野の「バロメーター」となってきました...

教育における人工知能の重要性とは何でしょうか?

未来は人工知能のものであるというのは議論の余地のない事実です。10年前に自動運転車や無人自動販売機に...

Dialogflow、Lex、Watson、Wit、Azure Robots の比較

[51CTO.com クイック翻訳] チャットボットは顧客とコミュニケーションをとる革新的な方法です...

エンドゲームゲームを使用して人工ニューラルネットワークアルゴリズムを理解する

[[431963]]この記事はWeChatの公開アカウント「Zhibin's Python ...

...

...

人工知能が教室に導入されると、教育プロセスにどのような変化が起こるでしょうか?

人工知能技術の応用により、コースの内容、教授法、教師と生徒の関係が変化しています。人工知能の利用によ...

...

Java プログラミング スキル - データ構造とアルゴリズム「基数ソート」

[[394975]]基数ソート基数ソートは「分散ソート」に属し、「バケット ソート」または「ビン ...

三国志を例に挙げて分散アルゴリズムについて語るのって、気楽なことでしょうか?

[[357046]]序文「三国殺し」は、中国の三国時代を背景に、身分を手がかりにカードを形にした人...

プロセスマイニングを通じて運用の卓越性を達成するための8つのステップ

運用の卓越性は、ビジネスの回復力と収益の成長を向上させる鍵となりますが、今日のプロセス所有者は、急速...

AIはオミクロン変異体の構造を1時間で予測、誤差は原子直径の半分のみ

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

GitHub スター 6000 以上! Pythonで機械学習のバイブルPRMLを実践

ビショップの PRML は機械学習のバイブルと言っても過言ではありません。この本では、パターン認識と...