You need to enable JavaScript to run this app. Python 如何将19个随机生成内容与密码每次随机排序输出
优惠活动
大模型
产品
解决方案
定价
更多

Python 如何将19个随机生成内容与密码每次随机排序输出

功能实现修正

原代码核心问题

  • 循环内生成的临时字符串没有做持久化存储,循环执行完成后所有临时生成的蜜词都会被覆盖,无法留存
  • 没有对「19个随机蜜词+1个用户真实密码」的集合做统一的随机重排操作,也没有逐行输出收集到的内容

实现逻辑

  • 新建空列表作为待输出的条目池,先把用户输入的真实密码存入池内
  • 循环19次,每次生成符合字符规则的20位随机串作为假蜜词,全部存入条目池
  • 直接调用Python内置的random.shuffle()方法对条目池做原地随机排序,该方法会自动打乱列表内所有元素的顺序,不需要手动实现随机排序逻辑
  • 遍历打乱后的条目池,逐行打印所有内容即可

修正后可直接运行的代码

import secrets
import string
import getpass
import random 

# 获取用户输入的真实密码
real_password = getpass.getpass("请输入你的密码:")

# 定义蜜词生成可用的字符集
honeyword_char_set = (string.ascii_letters 
                    + string.hexdigits 
                    + string.digits 
                    + string.punctuation)

# 初始化待输出的条目池
output_pool = []
# 将真实密码加入池内
output_pool.append(real_password)

# 生成19个独立的随机蜜词加入池内
for _ in range(19):
    fake_honeyword = ''.join(secrets.choice(honeyword_char_set) for _ in range(20))
    output_pool.append(fake_honeyword)

# 打乱整个池内的元素顺序
random.shuffle(output_pool)

print('Your honeypot is ready:', '\n')
# 逐行输出打乱后的所有内容
for entry in output_pool:
    print(entry)

效果说明

  • 每次程序启动时,random模块的默认随机种子会和系统实时时间绑定,能保证两次运行的输出顺序完全不重复
  • 使用secrets生成的假蜜词是密码级别的随机串,长度和常见密码长度一致,不会出现和真实密码辨识度差异过大的问题

内容的提问来源于stack exchange,提问作者GeoP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.12 04:54:04