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

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

推薦する

IoT、AI、デジタルツインをどのように統合するのか?

デジタル ツインは、物理世界とデジタル世界をつなぐため、常に興味深いものです。将来的には、すべてのも...

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

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

量子プロセッサのパフォーマンスはなぜ変動するのでしょうか? Googleが見つけた答えは、素材に欠陥があるということだ

量子プロセッサは最先端の研究テーマです。世界トップクラスの研究室や企業の研究機関が常に新たな進歩を遂...

2019年の技術予測: クラウド、ビッグデータ、AI、IoT、ブロックチェーン

[[258103]]テンセントテクノロジーニュース:フォーブスの寄稿者であるスティーブ・ウィルクス氏...

せっかちなGoogleのハードウェアから、中国と米国がAI商業化の問題をそれぞれどのように解決できるかまで

建国記念日の休日中は家にいて、Google カンファレンスを視聴しました。これらの製品のいくつかを見...

人工知能の分野に早く参入したいJavaプログラマーですか?準備はできたか?

導入今日は、Java プログラマーとして人工知能の分野に素早く参入する方法について説明します。現在、...

...

YOLOより高速な180万画素超軽量物体検出モデルNanoDet

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

自然言語処理: エンタープライズ AI の新たなフロンティア

単純なスペルミスや単語の誤用によって会話ボットの応答が変わってしまう可能性がありますが、人間のエージ...

地球外文明の探査における人工知能技術の応用

近年、人工知能(AI)は急速に発展し、さまざまな分野で画期的な進歩を遂げています。中国の著名な学者、...

...

...

人工知能と機械学習がもたらす劇的な変化を示す6つの事例

[[219896]]現在、人工知能 (AI) と機械学習 (ML) ほど注目されているテクノロジーは...

これほどリアルな効果を生み出すために、原作者を何人食べなければならなかったのですか?文生図はビジュアル「盗作」の疑い

少し前、ニューヨーク・タイムズ紙は、OpenAI が自社のコンテンツを人工知能開発のために違法に使用...

...