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

如何构建模型识别由Base64编码、Unix时间戳、HMAC组成的三段式特征字符串?

三段式特征字符串识别实现方案

这种字符串的结构特征非常明确,优先用规则校验方案即可达到100%的准确率,无需复杂的机器学习模型,实现步骤如下:

1. 结构初筛

用正则表达式快速过滤掉不符合基础格式的字符串,仅保留三个以.分隔的Base64编码段的内容:

  • 正则规则:^[A-Za-z0-9+/=]+\.[A-Za-z0-9+/=]+\.[A-Za-z0-9+/=]+$
  • 校验逻辑:匹配不通过直接判定为不符合要求,匹配通过后按.分割得到三个子串分别校验

2. 第一段校验

第一段是Base64编码的18位随机数,校验逻辑:

  • 对第一段做Base64解码,解码失败直接排除(注意要补全Base64末尾的=补位符,避免合法编码因为没有补位符解码失败)
  • 解码后得到的字节转换为数值,校验长度是否为18位,不符合则排除

3. 第二段校验

第二段是Base64编码的Unix时间戳,校验逻辑:

  • 对第二段做Base64解码,解码失败直接排除
  • 解码后得到的数值转换为Unix时间戳,校验是否在合理范围内:比如不能早于1970-01-01(时间戳0),不能晚于当前时间加合理的偏移量(比如预留1年有效期就设置为当前时间+31536000秒),超出范围则排除

4. 第三段校验(可选)

第三段是HMAC值,根据你是否持有生成该字符串的密钥选择是否校验:

  • 没有密钥:仅校验解码后的长度是否符合对应哈希算法的输出长度即可(比如SHA256对应的HMAC输出为32字节,SHA1对应20字节,根据你已知的生成规则确定阈值)
  • 持有密钥:将前两段原始字符串用.拼接后,用相同的哈希算法生成HMAC,和第三段解码后的结果做恒等对比,一致则完全匹配

如果你的场景存在规则无法覆盖的变种,需要用机器学习模型的话,实现逻辑如下:

  • 特征提取:提取字符串总长度、.的数量、各段Base64合法字符占比、各段解码后的长度、时间戳合理性分值、字符串信息熵(随机数和HMAC的信息熵远高于普通文本)
  • 样本准备:收集足够的正样本(符合要求的字符串)和负样本(普通文本、其他格式令牌、随机乱码等)
  • 模型训练:用逻辑回归、随机森林等轻量分类模型训练即可,特征区分度很高,无需复杂的深度学习模型

参考Python实现(规则校验版)

import base64
import time
import re

# 预定义基础正则
TOKEN_PATTERN = re.compile(r'^[A-Za-z0-9+/=]+\.[A-Za-z0-9+/=]+\.[A-Za-z0-9+/=]+$')
# 时间戳合理范围:1970-01-01 至 当前时间+1年
MIN_TS = 0
MAX_TS = int(time.time()) + 365 * 24 * 3600

def check_valid_token(token: str) -> bool:
    # 基础结构校验
    if not TOKEN_PATTERN.match(token):
        return False
    part1, part2, part3 = token.split('.')
    
    # 第一段18位随机数校验
    try:
        # 补全Base64补位符避免解码失败
        decoded_p1 = base64.b64decode(part1 + '=' * (-len(part1) % 4))
        if len(str(int.from_bytes(decoded_p1, byteorder='big'))) != 18:
            return False
    except Exception:
        return False
    
    # 第二段Unix时间戳校验
    try:
        decoded_p2 = base64.b64decode(part2 + '=' * (-len(part2) % 4))
        ts = int.from_bytes(decoded_p2, byteorder='big')
        if not (MIN_TS <= ts <= MAX_TS):
            return False
    except Exception:
        return False
    
    # 可选:第三段HMAC校验,持有密钥时启用
    # import hmac
    # import hashlib
    # SECRET = b'你的HMAC密钥'
    # try:
    #     decoded_p3 = base64.b64decode(part3 + '=' * (-len(part3) % 4))
    #     calc_hmac = hmac.new(SECRET, f"{part1}.{part2}".encode(), hashlib.sha256).digest()
    #     if not hmac.compare_digest(calc_hmac, decoded_p3):
    #         return False
    # except Exception:
    #     return False
    
    return True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:36:03