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

ブログ    
ブログ    

推薦する

Meta Digital Human 2nd Generation が登場! VRヘッドセットはもういらない、iPhoneでスキャンするだけ

Meta のリアルなデジタル ヒューマン 2.0 がさらに進化し、iPhone を使用して生成できる...

...

...

...

...

GPT-4 パラメータは 10 兆に達します!この表は、新しい言語モデルのパラメータが GPT-3 の 57 倍になると予測しています。

機械学習の場合、パラメータはアルゴリズムの鍵となります。パラメータは、履歴入力データであり、モデルト...

...

言語は「絆」であり、イメージバインドを超えて、さまざまなモードでパンチとキックを行う

北京大学とテンセントがマルチモーダル15角形の戦士を制作しました!言語を中心に据えて、ビデオ、オーデ...

屋台経済は活況を呈している!ロボットも問題を抱えている

「働いてお金を稼ぐのは大変すぎるから、屋台を出して自分で経営者になったほうがいいよ!」露店経済の突然...

今後の企業イノベーションを牽引する10の優れたテクノロジー

エンタープライズ テクノロジーの将来は、業界を変えるほどの大きな革新をもたらすでしょう。 5G から...

...

マイクロソフトがAR仮想「翻訳機」をデモ、将来の翻訳業界に影響を与える

7月22日のニュース:AR技術は継続的な発展により、徐々に成熟してきました。他の新しいテクノロジーと...

word2vecの作者はイリヤらとの10年間の恨みを明かした。seq2seqも私のアイデアだった

画期的な論文word2vec は、当然の NeurIPS Test of Time Award を受...

ハイテクロボット: すでに世界に存在する 5 つの驚くべきハイテクロボット

テクノロジー時代の到来とともに、ロボットは人間の世界の一部になったようです。これらは私たちの生活に多...