Files
2022-03-23 15:22:04 +01:00

3.1 KiB
Raw Permalink Blame History

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 課程的交互式教學部分。 目前,你可以在 YouTube 上通過 freeCodeCamp.org 上傳的一些視頻學習這個項目相關的知識。

--instructions--

密碼不應以純文本形式存儲。 它們應該存儲爲哈希值,以防萬一密碼列表被泄露。 然而,並不是所有的哈希都是一樣的。

在這個項目中,你將通過創建一個密碼破解器來找出使用 SHA-1 散列的密碼,從而瞭解到良好安全的重要性。

創建一個函數,該函數接受密碼的 SHA-1 哈希值,如果它是使用的前 10,000 個密碼之一,則返回該密碼。 如果 SHA-1 哈希不是數據庫中的密碼,則返回“密碼不在數據庫中”。

該函數應該對 top-10000-passwords.txt 中的每個密碼進行散列,並將其與傳遞給函數的散列進行比較。

該函數應採用名爲 use_salts 的可選第二個參數。 如果設置爲 true則文件 known-salts.txt 中的每個 salt 字符串,都應該在散列之前,和將它與傳遞給函數的哈希值進行比較之前,添加到 top-10000-passwords.txt 中的每個密碼的之前和之後。

以下是一些用於測試該功能的散列密碼:

  • b305921a3723cd5d70a375cd21a61e60aabb84ec 應該返回 “sammy123”
  • c7ab388a5ebefbf4d550652f1eb4d833e5316e3e 應該返回 “abacab”
  • 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 應該返回 “password”

以下是一些散列密碼,用於在 use_salts 設置爲 True 時測試該功能:

  • 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.