1635505380
ハッシュアルゴリズムは、データを固定長のハッシュ値、ハッシュコード、またはハッシュに変換する数学関数です。出力ハッシュ値は、文字通り元の値の要約です。これらのハッシュ値について最も重要なことは、ハッシュ値だけから元の入力データを取得することは不可能であるということです。
今、あなたは考えているかもしれません、それではハッシュアルゴリズムを使用することの利点は何ですか?なぜ暗号化を使用するのですか?暗号化はデータを保護するために重要ですが(データの機密性)、送信するデータを誰も変更していないことを証明できることが重要な場合があります。ハッシュ値を使用すると、作成後に一部のファイルが変更されていないかどうかを確認できます(データの整合性)。
それだけではありません。それらの使用例はたくさんあります。例としては、デジタル署名、公開鍵暗号化、メッセージ認証、パスワード保護、その他多くの暗号化プロトコルがあります。実際、ファイルをクラウドストレージシステムに保存する場合でも、Gitバージョン管理システムを使用する場合でも、HTTPS Webサイトに接続する場合でも、SSHを使用してリモートマシンに接続する場合でも、携帯電話でメッセージを送信する場合でも、どこかにハッシュ関数があります。フードの下。
このチュートリアルでは、hashlib組み込みモジュールを使用して、Pythonでさまざまなハッシュアルゴリズムを使用します。始めましょう。
import hashlib
# encode it to bytes using UTF-8 encoding
message = "Some text to hash".encode()
MD5から始めて、このメッセージ文字列にさまざまなハッシュアルゴリズムを使用します。
# hash with MD5 (not recommended)
print("MD5:", hashlib.md5(message).hexdigest())
出力:
MD5: 3eecc85e6440899b28a9ea6d8369f01c
MD5 は現在かなり時代遅れであり、衝突耐性がないため、絶対に使用しないでください。SHA-2を試してみましょう。
# hash with SHA-2 (SHA-256 & SHA-512)
print("SHA-256:", hashlib.sha256(message).hexdigest())
print("SHA-512:", hashlib.sha512(message).hexdigest())
出力:
SHA-256: 7a86e0e93e6aa6cf49f19368ca7242e24640a988ac8e5508dfcede39fa53faa2
SHA-512: 96fa772f72678c85bbd5d23b66d51d50f8f9824a0aba0ded624ab61fe8b602bf4e3611075fe13595d3e74c63c59f7d79241acc97888e9a7a5c791159c85c3ccd
SHA-2 は、 SHA-224、 SHA-256、 SHA-384、 SHA-512の4つのハッシュ関数のファミリーです。hashlib.sha224()とhashlib.sha-384()を使用することもできます。ただし、 SHA-256とSHA-512が主に使用されます。
それは呼ばれています理由SHA-2 (S ecure H灰A lgorithm 2ので)が、あるSHA-2がの後継であるSHA-1時代遅れと壊れやすいれる、の動機SHA-2は、そのリード長いハッシュを生成することでしたSHA-1よりも高いセキュリティレベルに。
が、SHA-2はまだ、今日使用され、多くはへの攻撃と信じているSHA-2は、単に時間の問題で、研究者は、原因との類似性への長期的なセキュリティが心配されているSHA-1 。
その結果、SHA-3はバックアッププランとしてNISTによって導入されました。これは、SHA-2やSHA-1とはまったく異なるスポンジ関数です。Pythonで見てみましょう。
# hash with SHA-3
print("SHA-3-256:", hashlib.sha3_256(message).hexdigest())
print("SHA-3-512:", hashlib.sha3_512(message).hexdigest())
出力:
SHA-3-256: d7007c1cd52f8168f22fa25ef011a5b3644bcb437efa46de34761d3340187609
SHA-3-512: de6b4c8f7d4fd608987c123122bcc63081372d09b4bc14955bfc828335dec1246b5c6633c5b1c87d2ad2b777d713d7777819263e7ad675a3743bf2a35bc699d0
SHA-3 がすぐに壊れることはほとんどありません。実際、何百人もの熟練した暗号解読者がSHA-3を破ることができませんでした。
ハッシュアルゴリズムで安全とはどういう意味ですか?ハッシュ関数には、攻撃者が同じハッシュ値にハッシュする2つのまったく異なるメッセージを見つけるのを非常に困難にするアルゴリズムによって提供される衝突耐性など、多くの安全特性があります。
プレイメージ耐性は、ハッシュアルゴリズムのセキュリティにとって重要な要素でもあります。プレイメージ耐性のあるアルゴリズムでは、攻撃者がハッシュ値を指定して元のメッセージを見つけるのが困難で時間がかかります。
アップグレードするには、いくつかの優遇措置があるSHA-3以降、SHA-2がまだ安全で、かつ速度も懸念されるため、SHA-3がより速くないSHA-2 。
SHA-2よりも安全で、少なくともSHA-3と同じくらい安全な、より高速なハッシュ関数を使用したい場合はどうでしょうか。答えはBLAKE2にあります:
# hash with BLAKE2
# 256-bit BLAKE2 (or BLAKE2s)
print("BLAKE2c:", hashlib.blake2s(message).hexdigest())
# 512-bit BLAKE2 (or BLAKE2b)
print("BLAKE2b:", hashlib.blake2b(message).hexdigest())
出力:
BLAKE2c: 6889074426b5454d751547cd33ca4c64cd693f86ce69be5c951223f3af845786
BLAKE2b: 13e2ca8f6a282f27b2022dde683490b1085b3e16a98ee77b44b25bc84a0366afe8d70a4aa47dd10e064f1f772573513d64d56e5ef646fb935c040b32f67e5ab2
BLAKE2の ハッシュが速くよりもSHA-1 、 SHA-2 、 SHA-3ともMD5、およびよりもさらに安全なSHA-2 。マルチコアシステムでの並列コンピューティングをサポートする最新のCPUでの使用に適しています。
BLAKE2は広く使用されており、OpenSSLやSodiumなどの主要な暗号化ライブラリに統合されています。
また、すべてのファイルコンテンツを読み取り、ファイルバイトを対象の関数に渡すだけで、ファイル全体を簡単にハッシュすることもできます。ここで対応するコードを確認してください。
まとめると、さらに読むには、hashlibモジュールの公式Pythonドキュメントを読む必要があります。また、あなたが暗号に興味があるなら、深刻な暗号の本は私が暗号を学ぶのに大いに役立ちました、私はあなたもそうすることを願っています!
リンク: https://www.thepythoncode.com/article/hashing-functions-in-python-using-hashlib
1635505380
ハッシュアルゴリズムは、データを固定長のハッシュ値、ハッシュコード、またはハッシュに変換する数学関数です。出力ハッシュ値は、文字通り元の値の要約です。これらのハッシュ値について最も重要なことは、ハッシュ値だけから元の入力データを取得することは不可能であるということです。
今、あなたは考えているかもしれません、それではハッシュアルゴリズムを使用することの利点は何ですか?なぜ暗号化を使用するのですか?暗号化はデータを保護するために重要ですが(データの機密性)、送信するデータを誰も変更していないことを証明できることが重要な場合があります。ハッシュ値を使用すると、作成後に一部のファイルが変更されていないかどうかを確認できます(データの整合性)。
それだけではありません。それらの使用例はたくさんあります。例としては、デジタル署名、公開鍵暗号化、メッセージ認証、パスワード保護、その他多くの暗号化プロトコルがあります。実際、ファイルをクラウドストレージシステムに保存する場合でも、Gitバージョン管理システムを使用する場合でも、HTTPS Webサイトに接続する場合でも、SSHを使用してリモートマシンに接続する場合でも、携帯電話でメッセージを送信する場合でも、どこかにハッシュ関数があります。フードの下。
このチュートリアルでは、hashlib組み込みモジュールを使用して、Pythonでさまざまなハッシュアルゴリズムを使用します。始めましょう。
import hashlib
# encode it to bytes using UTF-8 encoding
message = "Some text to hash".encode()
MD5から始めて、このメッセージ文字列にさまざまなハッシュアルゴリズムを使用します。
# hash with MD5 (not recommended)
print("MD5:", hashlib.md5(message).hexdigest())
出力:
MD5: 3eecc85e6440899b28a9ea6d8369f01c
MD5 は現在かなり時代遅れであり、衝突耐性がないため、絶対に使用しないでください。SHA-2を試してみましょう。
# hash with SHA-2 (SHA-256 & SHA-512)
print("SHA-256:", hashlib.sha256(message).hexdigest())
print("SHA-512:", hashlib.sha512(message).hexdigest())
出力:
SHA-256: 7a86e0e93e6aa6cf49f19368ca7242e24640a988ac8e5508dfcede39fa53faa2
SHA-512: 96fa772f72678c85bbd5d23b66d51d50f8f9824a0aba0ded624ab61fe8b602bf4e3611075fe13595d3e74c63c59f7d79241acc97888e9a7a5c791159c85c3ccd
SHA-2 は、 SHA-224、 SHA-256、 SHA-384、 SHA-512の4つのハッシュ関数のファミリーです。hashlib.sha224()とhashlib.sha-384()を使用することもできます。ただし、 SHA-256とSHA-512が主に使用されます。
それは呼ばれています理由SHA-2 (S ecure H灰A lgorithm 2ので)が、あるSHA-2がの後継であるSHA-1時代遅れと壊れやすいれる、の動機SHA-2は、そのリード長いハッシュを生成することでしたSHA-1よりも高いセキュリティレベルに。
が、SHA-2はまだ、今日使用され、多くはへの攻撃と信じているSHA-2は、単に時間の問題で、研究者は、原因との類似性への長期的なセキュリティが心配されているSHA-1 。
その結果、SHA-3はバックアッププランとしてNISTによって導入されました。これは、SHA-2やSHA-1とはまったく異なるスポンジ関数です。Pythonで見てみましょう。
# hash with SHA-3
print("SHA-3-256:", hashlib.sha3_256(message).hexdigest())
print("SHA-3-512:", hashlib.sha3_512(message).hexdigest())
出力:
SHA-3-256: d7007c1cd52f8168f22fa25ef011a5b3644bcb437efa46de34761d3340187609
SHA-3-512: de6b4c8f7d4fd608987c123122bcc63081372d09b4bc14955bfc828335dec1246b5c6633c5b1c87d2ad2b777d713d7777819263e7ad675a3743bf2a35bc699d0
SHA-3 がすぐに壊れることはほとんどありません。実際、何百人もの熟練した暗号解読者がSHA-3を破ることができませんでした。
ハッシュアルゴリズムで安全とはどういう意味ですか?ハッシュ関数には、攻撃者が同じハッシュ値にハッシュする2つのまったく異なるメッセージを見つけるのを非常に困難にするアルゴリズムによって提供される衝突耐性など、多くの安全特性があります。
プレイメージ耐性は、ハッシュアルゴリズムのセキュリティにとって重要な要素でもあります。プレイメージ耐性のあるアルゴリズムでは、攻撃者がハッシュ値を指定して元のメッセージを見つけるのが困難で時間がかかります。
アップグレードするには、いくつかの優遇措置があるSHA-3以降、SHA-2がまだ安全で、かつ速度も懸念されるため、SHA-3がより速くないSHA-2 。
SHA-2よりも安全で、少なくともSHA-3と同じくらい安全な、より高速なハッシュ関数を使用したい場合はどうでしょうか。答えはBLAKE2にあります:
# hash with BLAKE2
# 256-bit BLAKE2 (or BLAKE2s)
print("BLAKE2c:", hashlib.blake2s(message).hexdigest())
# 512-bit BLAKE2 (or BLAKE2b)
print("BLAKE2b:", hashlib.blake2b(message).hexdigest())
出力:
BLAKE2c: 6889074426b5454d751547cd33ca4c64cd693f86ce69be5c951223f3af845786
BLAKE2b: 13e2ca8f6a282f27b2022dde683490b1085b3e16a98ee77b44b25bc84a0366afe8d70a4aa47dd10e064f1f772573513d64d56e5ef646fb935c040b32f67e5ab2
BLAKE2の ハッシュが速くよりもSHA-1 、 SHA-2 、 SHA-3ともMD5、およびよりもさらに安全なSHA-2 。マルチコアシステムでの並列コンピューティングをサポートする最新のCPUでの使用に適しています。
BLAKE2は広く使用されており、OpenSSLやSodiumなどの主要な暗号化ライブラリに統合されています。
また、すべてのファイルコンテンツを読み取り、ファイルバイトを対象の関数に渡すだけで、ファイル全体を簡単にハッシュすることもできます。ここで対応するコードを確認してください。
まとめると、さらに読むには、hashlibモジュールの公式Pythonドキュメントを読む必要があります。また、あなたが暗号に興味があるなら、深刻な暗号の本は私が暗号を学ぶのに大いに役立ちました、私はあなたもそうすることを願っています!
リンク: https://www.thepythoncode.com/article/hashing-functions-in-python-using-hashlib