如何使用Python对JSON数据执行MD5哈希转换?
实现JSON数据的MD5哈希字段生成及学习资料推荐
问题背景
我熟悉用Python处理CSV格式数据转换,但刚接触JSON数据转换。现有JSON流数据,想给每条数据应用MD5算法生成哈希值,已经写好MD5哈希生成代码,但不知道怎么把它整合到JSON处理流程里。
现有MD5哈希生成脚本
import hashlib # initializing string Password= "kureen2022!" AccountName = "ikire@gmail.com" # Convert password to bytes pw_byte = Password.encode() # Generate Salt salt = AccountName.lower().encode() # Concatenate salt with password, apply md5 result = hashlib.md5(salt+pw_byte) pw_hash = result.hexdigest() # printing Hash value. print(pw_hash)
现有JSON处理脚本
import json f = open('my_json.Json') data = json.load(f) for i in data['details']: print(i)
示例JSON数据
{ "details" : [ { "AccountName": "dojoujre", "Password": "password123" }, { "AccountName": "dojoujre", "Password": "password007" } ] }
目标输出
{ "details" : [ { "AccountName": "dojoujre", "Password": "password123", "Hash": "93837373930" }, { "AccountName": "dojoujre", "Password": "password007", "Hash": "eer3er5t6t6y" } ] }
实现步骤
1. 封装可复用的MD5哈希函数
把MD5逻辑改成可调用的函数,方便在遍历JSON数据时重复使用:
import hashlib def generate_md5_hash(account_name, password): # 生成salt并转换为字节 salt = account_name.lower().encode() pw_byte = password.encode() # 拼接salt与密码后生成MD5哈希 result = hashlib.md5(salt + pw_byte) return result.hexdigest()
2. 整合JSON处理与哈希生成
读取JSON数据后,遍历每条详情数据,调用哈希函数生成值并添加新字段:
import json # 读取JSON文件(用with语句自动管理文件关闭) with open('my_json.Json', 'r') as f: data = json.load(f) # 遍历每个条目,生成并添加Hash字段 for item in data['details']: item['Hash'] = generate_md5_hash(item['AccountName'], item['Password']) # 打印处理结果 print(json.dumps(data, indent=2)) # 将结果写入新的JSON文件 with open('hashed_result.Json', 'w') as f: json.dump(data, f, indent=2)
3. 完整可运行代码
将两部分逻辑整合到一起:
import hashlib import json def generate_md5_hash(account_name, password): salt = account_name.lower().encode() pw_byte = password.encode() result = hashlib.md5(salt + pw_byte) return result.hexdigest() # 读取原始JSON数据 with open('my_json.Json', 'r') as f: data = json.load(f) # 为每条数据生成哈希字段 for item in data['details']: item['Hash'] = generate_md5_hash(item['AccountName'], item['Password']) # 保存处理后的结果 with open('hashed_result.Json', 'w') as f: json.dump(data, f, indent=2) # 控制台输出验证 print(json.dumps(data, indent=2))
JSON数据转换学习资料推荐
- Python官方
json模块文档:重点掌握序列化(json.dump/dumps)、反序列化(json.load/loads)的基础用法,以及Python与JSON数据类型的映射规则 - Python核心编程相关章节:通过嵌套JSON结构(多层对象、数组)的处理练习,加深数据遍历、修改的逻辑理解
- 实战类练习:尝试处理包含空值、特殊字符、复杂嵌套的JSON数据,掌握异常处理(比如KeyError、JSONDecodeError)的技巧
内容的提问来源于stack exchange,提问作者Abiodun Adeoye
相关产品推荐
相关产品推荐

