网络安全计划

问题描述 投票:0回答:1

编写一个 Python 程序,读取包含用户名和密码列表的文件,每行一对(用逗号分隔)。它会检查每个密码,看看它是否在数据泄露中被泄露。您可以使用“Have I Been Pwned”API (https://haveibeenpwned.com/API/v3) 来检查密码是否泄露。

我已阅读包含用户名和密码的文件,但我仍坚持尝试使用 SHA-1 算法对密码进行哈希处理

python security hash passwords sha1
1个回答
0
投票

要在 Python 中使用 SHA-1 算法对密码进行哈希处理,您可以使用

hashlib
库。

这是一个简单的例子:

import hashlib

def sha1_hash(password):
    sha1 = hashlib.sha1()
    sha1.update(password.encode('utf-8'))
    return sha1.hexdigest()

# Example usage
password = "password123"
hashed_password = sha1_hash(password)
print(f"Original Password: {password}")
print(f"SHA-1 Hash: {hashed_password}")

现在,您可以将其集成到您的程序中,以在根据“Have I Been Pwned”API 检查密码之前对密码进行哈希处理。下面是一个示例程序,它读取包含用户名和密码的文件,对密码进行哈希处理,然后根据 API 进行检查:

import hashlib
import requests

def sha1_hash(password):
    sha1 = hashlib.sha1()
    sha1.update(password.encode('utf-8'))
    return sha1.hexdigest().upper()  # Convert to uppercase as required by the API

def check_password_leak(password_hash):
    api_url = f"https://api.pwnedpasswords.com/range/{password_hash[:5]}"
    response = requests.get(api_url)
    if response.status_code == 200:
        hashes = response.text.splitlines()
        return password_hash[5:] in hashes
    return False

def main():
    with open("usernames_passwords.txt", "r") as file:
        for line in file:
            username, password = map(str.strip, line.split(','))
            hashed_password = sha1_hash(password)
            
            if check_password_leak(hashed_password):
                print(f"Password for {username} has been leaked!")

if __name__ == "__main__":
    main()

该程序读取文件“usernames_passwords.txt”,使用 SHA-1 对每个密码进行哈希处理,然后使用“Have I Been Pwned”API 检查哈希密码是否已泄露。如果密码泄露,它会打印一条消息,表明密码已被泄露。

© www.soinside.com 2019 - 2024. All rights reserved.