Files
2022-01-20 20:30:18 +01:00

4.3 KiB

id, title, challengeType, forumTopicId, helpCategory, dashedName
id title challengeType forumTopicId helpCategory dashedName
5e46f983ac417301a38fb933 SHA-1 パスワードクラッカー 10 462374 Python sha-1-password-cracker

--description--

このプロジェクトは Replit スターターコードを使用して作業を行います。

Python カリキュラムの対話式教育コンテンツを引き続き開発中です。 現在、下記の freeCodeCamp.org YouTube チャンネルで、このプロジェクトの完了に必要なすべての知識について説明する動画をいくつか公開しています。

--instructions--

パスワードはプレーンテキストで保存すべきではありません。 パスワードリストが暴露された場合に備えて、ハッシュとして保存する必要があります。 ただし、すべてのハッシュが同じように作成されるとは限りません。

このプロジェクトでは、SHA-1 を使用してハッシュ化されたパスワードの解読を試みるパスワードクラックプログラムを作成し、その作業を通じて適切なセキュリティを実現することの重要性を学びます。

パスワードの SHA-1 ハッシュを受け取り、パスワードがすでに使用されている上位 10,000 個のうちの 1 つである場合に、そのパスワードを返す関数を作成してください。 SHA-1 ハッシュがデータベースにあるパスワード「ではない」場合は、"PASSWORD NOT IN DATABASE" を返してください。

関数では、top-10000-passwords.txt から得られるそれぞれのパスワードをハッシュし、それらを関数に渡されたハッシュと比較する必要があります。

関数は、use_salts というオプションの 2 つ目の引数を受け取る必要があります。 この引数が true に設定されている場合は、top-10000-passwords.txt から得られる各パスワードの「前と後ろの両方」に、ファイル known-salts.txt から得られる各ソルト文字列を追加したうえで、ハッシュ化を行い、関数に渡されたハッシュと比較する必要があります。

関数のテストに使用できるハッシュ化されたパスワードの例を次に示します。

  • b305921a3723cd5d70a375cd21a61e60aabb84ec は "sammy123" を返す
  • c7ab388a5ebefbf4d550652f1eb4d833e5316e3e は "abacab" を返す
  • 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 は "password" を返す

use_saltsTrue に設定した場合に関数のテストに使用できるハッシュ化されたパスワードの例を次に示します。

  • 53d8b3dc9d39f0184144674e310185e41a87ffd5 は "superman" を返す
  • da5a4e8cf89539e66097acd2f8af128acae2f8ae は "q1w2e3r4t5" を返す
  • ea3f62d498e3b98557f9f9cd0d905028b3b019e1 は "bubbles1" を返す

hashlib ライブラリをあらかじめインポートしてあります。 コードでこのライブラリを使用してみてください。 hashlib の詳細についてはこちらを参照してください。

開発

password_cracker.py にコードを記述してください。 開発には main.py を使用してコードをテストすることができます。 「実行」ボタンをクリックすると main.py が実行されます。

テスト

このプロジェクトの単体テストは test_module.py にあります。 すでに test_module.py から main.py にテストをインポートしてあります。 「実行」ボタンを押すと自動的にテストが実行されます。

提出

プロジェクトの URL をコピーし、freeCodeCamp に提出してください。

--hints--

すべての Python テストに合格する必要があります。


--solutions--

  # Python challenges don't need solutions,
  # because they would need to be tested against a full working project.
  # Please check our contributing guidelines to learn more.