本文目录导读:

- 场景一:基于对称加密或哈希的离线授权码(如软件注册码)
- 场景二:校验 JWT(JSON Web Token)类型授权码(如 API Token)
- 场景三:Shell 脚本校验简单的 HMAC 授权码(适合 Unix/Linux 环境)
- 场景四:验证一次性授权码(TOTP/OTP,如 Google Authenticator)
- 安全建议(重要!)
针对“如何用脚本验证授权码”这个问题,需要先明确几个关键点,因为“授权码”在不同场景下含义不同:
- 软件激活码(如 Windows、Adobe 的序列号):通常需要联网或离线校验算法。
- API 授权码 / Token(如 JWT、Bearer Token):通常需要校验签名和过期时间。
- 一次性密码(OTP)/ 验证码:通常需要比对时间戳或哈希值。
以下提供4种最常见场景的脚本验证方法(以 Python 和 Shell 为例,覆盖多数需求)。
基于对称加密或哈希的离线授权码(如软件注册码)
原理:服务端用密钥对用户信息签名,生成授权码;客户端用相同密钥验证签名是否合法。
Python 脚本示例(使用 HMAC-SHA256):
import hmac
import hashlib
import base64
SECRET_KEY = b"your-secret-key-2024" # 与生成端共享的密钥
def verify_license_code(license_code: str, user_info: str = "default_user") -> bool:
"""
验证授权码是否合法
:param license_code: 用户输入的授权码(通常是 Base64 编码的签名)
:param user_info: 被签名的信息(如用户名、机器码)
"""
try:
# 生成正确的签名
expected_sig = hmac.new(
SECRET_KEY,
user_info.encode('utf-8'),
hashlib.sha256
).hexdigest()[:12] # 取前12位作为短码
# 比较
return hmac.compare_digest(license_code, expected_sig)
except Exception:
return False
# 使用示例
user_input = input("请输入授权码: ")
if verify_license_code(user_input):
print("✅ 授权码有效")
else:
print("❌ 授权码无效")
- 扩展:可将
user_info改为机器MAC地址 + 有效期,实现硬件绑定和过期校验。
校验 JWT(JSON Web Token)类型授权码(如 API Token)
原理:JWT 包含 Header、Payload、Signature 三部分,用公钥/密钥验签。
Python 脚本(使用 PyJWT 库):
# 先安装 pip install pyjwt
import jwt
import time
# 你的公钥(或对称密钥)
PUBLIC_KEY = """-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----"""
# 或使用对称密钥: SECRET = "my-symmetric-secret"
def verify_jwt_token(token: str) -> dict or None:
"""验证 JWT 授权码,返回 payload 或 None"""
try:
# 验签 + 自动校验过期时间(exp字段)
payload = jwt.decode(
token,
PUBLIC_KEY, # 对称密钥用 SECRET
algorithms=["RS256", "HS256"], # 根据实际算法选择
options={"verify_exp": True}
)
return payload
except jwt.ExpiredSignatureError:
print("❌ Token已过期")
except jwt.InvalidTokenError as e:
print(f"❌ 无效Token: {e}")
return None
# 使用
token = "eyJhbGciOiJSUzI1NiIs..."
payload = verify_jwt_token(token)
if payload:
print(f"✅ 授权有效,用户ID: {payload.get('sub')}")
Shell 脚本校验简单的 HMAC 授权码(适合 Unix/Linux 环境)
原理:利用系统内置的 openssl 计算 HMAC,适合无 Python 环境。
#!/bin/bash
SECRET="your_secret_key"
MACHINE_ID=$(hostname) # 或 cat /sys/class/net/eth0/address
# 用户输入的授权码
read -p "请输入授权码: " USER_CODE
# 计算正确的授权码(取前8位)
EXPECTED_CODE=$(echo -n "$MACHINE_ID" | openssl dgst -sha256 -hmac "$SECRET" | cut -d' ' -f2 | cut -c1-8)
if [ "$USER_CODE" = "$EXPECTED_CODE" ]; then
echo "✅ 授权码有效"
else
echo "❌ 授权码无效"
exit 1
fi
- 注意:此方法极度简化,仅供演示,生产环境需用
openssl的-binary和base64编码。
验证一次性授权码(TOTP/OTP,如 Google Authenticator)
原理:基于时间戳和共享密钥,生成 6 位数字,每 30 秒变化一次。
Python 脚本(使用 pyotp 库):
pip install pyotp
import pyotp
# 服务端和客户端共有的密钥(通常以 Base32 存储)
SECRET = "JBSWY3DPEHPK3PXP" # 示例密钥
def verify_otp(otp_code: str) -> bool:
"""验证 6 位一次性授权码"""
totp = pyotp.TOTP(SECRET)
# 默认允许前后一个时间片(30秒)的偏差
return totp.verify(otp_code, valid_window=1)
# 使用
user_input = input("请输入验证码: ")
if verify_otp(user_input):
print("✅ 一次性授权码有效")
else:
print("❌ 无效或已过期")
安全建议(重要!)
- 密钥保密原则:客户端验签的密钥应硬编码或混淆后存储(如用
base64编码后分片存储,再运行时拼接),或使用非对称密钥(客户端只存公钥)。 - 防止重放攻击:若为网络场景,应在授权码中加入时间戳或 nonce(一次性随机数),服务端记录已使用过的 nonce。
- 不要仅依赖客户端验证:关键权限(如支付、管理后台)必须在服务端再次验证授权码,客户端脚本主要用于“本地解锁功能”或减少服务端压力。
- 日志安全:验证失败时不要打印完整授权码,只打印前 4 位或哈希值。
| 场景 | 推荐方法 | 核心脚本 |
|---|---|---|
| 离线软件授权码 | HMAC-SHA256 签名 | Python hmac 模块 |
| API/Web Token | JWT 验签 | PyJWT 库 |
| 服务器环境验证 | Shell + openssl |
Shell 脚本 |
| 一次性验证码 | TOTP 算法 | pyotp 库 |
你可以根据授权码的生成方和需要验证的环境,从以上 4 种方法中选择最适合的一个,如果需要针对特定场景(如 Adobe 激活、特定游戏平台)的验证,请补充授权码的格式样例和生成逻辑,我可以提供更精准的脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播