如何使用Python读取并处理'dict.txt'文件,生成一个字典?在这个字典中,应将文件中的明文密码通过MD5加密作为键,对应值为原始明文。当用户输入一个MD5加密后的字符串,程序应该如何从这个字典中解密并找到对应的明文密码?
时间: 2024-12-17 14:39:50 浏览: 1
Python使用dict.fromkeys()快速生成一个字典示例
在Python中,你可以使用内置的`hashlib`库来进行MD5加密,并使用`open()`函数读取文件。以下是步骤:
1. 首先,需要导入`hashlib`, `json` 和 `io`模块:
```python
import hashlib
import json
from io import StringIO
```
2. 使用`open()`函数打开文件,并逐行读取内容。对于每一行,分割成两个部分,原始明文作为键,原始明文的MD5哈希作为值:
```python
with open('dict.txt', 'r') as f:
lines = f.readlines()
data_dict = {}
for line in lines:
key, value = line.strip().split(':')
data_dict[md5_hash(value)] = key
```
这里,我们假设`md5_hash()`是一个函数,它接受一个字符串并返回其MD5哈希结果。在实际代码中,可以这样实现:
```python
def md5_hash(s):
return hashlib.md5(s.encode()).hexdigest()
```
3. 将生成的字典保存为JSON文件,以便后续加载和查找:
```python
with open('encrypted_dict.json', 'w') as f:
json.dump(data_dict, f)
```
4. 要解密并查找对应的明文密码,可以这样设计一个查询函数:
```python
def decrypt_password(encrypted_key):
with open('encrypted_dict.json', 'r') as f:
data_dict = json.load(f)
try:
original_text = data_dict.get(encrypted_key)
return original_text
except KeyError:
print("无法找到对应的明文密码")
```
现在,如果有一个MD5加密后的字符串,你可以调用`decrypt_password()`函数来获取对应的原始明文。
```python
encrypted_key = "your_encrypted_md5_string"
original_text = decrypt_password(encrypted_key)
```
阅读全文