You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python一次性激活密钥生成与验证脚本开发需求

实现一次性专属许可证密钥的Python方案

核心思路

要实现一次性专属密钥,关键是做好密钥生成和已用密钥记录两个环节:用安全的随机算法生成唯一密钥,同时通过存储介质(本地文件或数据库)记录已激活的密钥,确保每个密钥仅能使用一次。

1. 生成安全的一次性密钥

用Python内置的secrets模块(比random更适合安全场景)生成随机密钥,格式可以设计成分组样式,方便用户输入:

import secrets
import string

def generate_license_key(length=16, groups=4):
    # 定义密钥可用字符:大小写字母+数字
    chars = string.ascii_letters + string.digits
    # 生成指定长度的随机字符
    raw_key = ''.join(secrets.choice(chars) for _ in range(length))
    # 分成易读的分组(比如XXXX-XXXX-XXXX-XXXX)
    return '-'.join([raw_key[i:i+length//groups] for i in range(0, length, length//groups)])

# 示例:生成一个密钥(你可以单独运行这个函数生成密钥卖给用户)
# print(generate_license_key())

2. 完整的密钥验证与激活流程

用本地文件记录已使用的密钥,每次验证时先检查密钥是否已被激活,未激活则标记为已使用并允许进入程序:

import secrets
import string

# 存储已用密钥的文件路径
USED_KEYS_FILE = "used_licenses.txt"

def generate_license_key(length=16, groups=4):
    chars = string.ascii_letters + string.digits
    raw_key = ''.join(secrets.choice(chars) for _ in range(length))
    return '-'.join([raw_key[i:i+length//groups] for i in range(0, length, length//groups)])

def load_used_keys():
    # 读取已使用的密钥集合
    try:
        with open(USED_KEYS_FILE, 'r') as f:
            return set(f.read().splitlines())
    except FileNotFoundError:
        # 文件不存在则返回空集合
        return set()

def mark_key_as_used(key):
    # 将已激活的密钥写入文件
    with open(USED_KEYS_FILE, 'a') as f:
        f.write(key + '\n')

def validate_license(input_key):
    used_keys = load_used_keys()
    # 先检查密钥是否已被使用
    if input_key in used_keys:
        return False, "该密钥已被激活,请使用新密钥"
    # 验证通过,标记为已使用
    mark_key_as_used(input_key)
    return True, "激活成功!"

# 用户激活流程
user_input_key = input("请输入激活密钥:\n").strip()
is_valid, msg = validate_license(user_input_key)
print(msg)

if is_valid:
    # 这里写程序的核心功能代码
    print("进入程序主功能模块...")
else:
    print("程序即将退出,请获取有效密钥后重试")

进阶优化建议

  • 防篡改:本地文件存储易被修改,生产环境建议换成远程数据库(如MySQL、SQLite),或给密钥添加数字签名(用cryptography模块实现),防止用户伪造密钥。
  • 用户绑定:可以将密钥和用户的机器标识(如MAC地址、CPU序列号)绑定,实现真正的个人专属密钥,避免密钥被分享。
  • 密钥管理:单独维护一个密钥生成工具,生成密钥后记录在自己的数据库中,卖给用户时发放未使用的密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:12:03