增加密码生成
This commit is contained in:
parent
712160462e
commit
abfc5cc817
70
guess copy.py
Normal file
70
guess copy.py
Normal file
@ -0,0 +1,70 @@
|
||||
def generate_clue_file(output_path="clue.json"):
|
||||
"""
|
||||
生成包含密码线索和哈希值的 JSON 文件
|
||||
包含 1~3 个合法线索条件(基于真实密码内容)
|
||||
"""
|
||||
password = generate_random_password()
|
||||
lock = PasswordLock()
|
||||
stored_hash = lock.hash_password(password)
|
||||
digits = list(map(int, password))
|
||||
|
||||
conditions = []
|
||||
|
||||
# 判断是否满足 [-1, -1] 条件
|
||||
satisfy_prime_unique = satisfies_prime_unique_condition(digits)
|
||||
|
||||
# 线索种类池
|
||||
available_methods = [1, 2]
|
||||
if satisfy_prime_unique:
|
||||
available_methods.append(3) # 添加 [-1, -1] 的机会
|
||||
|
||||
# 随机生成 1~3 个线索
|
||||
num_conditions = random.randint(1, 3)
|
||||
used_positions = set() # 已使用的位置(避免重复添加相同位置的奇偶性)
|
||||
|
||||
for _ in range(num_conditions):
|
||||
method = random.choice(available_methods)
|
||||
|
||||
if method == 1: # [a, t]: 奇偶性判断
|
||||
while True:
|
||||
pos = random.randint(1, 3)
|
||||
if pos not in used_positions:
|
||||
break
|
||||
digit = digits[pos - 1]
|
||||
parity = digit % 2 # 根据实际奇偶性生成
|
||||
conditions.append([pos, parity])
|
||||
used_positions.add(pos)
|
||||
|
||||
elif method == 2: # [x, y, z]: 固定某位数字
|
||||
while True:
|
||||
idx = random.randint(0, 2)
|
||||
if idx not in used_positions:
|
||||
break
|
||||
cond = [-1, -1, -1]
|
||||
cond[idx] = digits[idx]
|
||||
conditions.append(cond)
|
||||
used_positions.add(idx)
|
||||
|
||||
elif method == 3: # [-1, -1]: 每位为素数且不重复
|
||||
if satisfy_prime_unique and [-1, -1] not in conditions:
|
||||
conditions.append([-1, -1])
|
||||
|
||||
# 至少保留一个线索
|
||||
if not conditions:
|
||||
return generate_clue_file(output_path)
|
||||
|
||||
# 写入文件
|
||||
clue_data = {
|
||||
"C": conditions,
|
||||
"L": stored_hash
|
||||
}
|
||||
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(clue_data, f, ensure_ascii=False, indent=4)
|
||||
|
||||
print(f"已生成线索文件: {output_path}")
|
||||
print(f"原始密码: {password}")
|
||||
print(f"线索内容: {conditions}")
|
||||
print(f"哈希值: {stored_hash}")
|
||||
|
||||
return password, conditions, stored_hash
|
Loading…
Reference in New Issue
Block a user