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

使用Fernet暴力解密时触发cryptography.fernet.InvalidToken错误求助

错误原因解析

cryptography.fernet.InvalidToken错误的核心原因是:你使用了错误的Fernet密钥去解密密文。

Fernet协议本身自带身份验证机制——解密时会用密钥对密文的签名做校验,只有当密钥和加密时使用的完全匹配时,校验才会通过,解密才能成功;如果密钥不匹配,会直接抛出InvalidToken异常,不会返回任何乱码或无效内容。

你的脚本逻辑里,每次循环都会生成全新的随机密钥,而加密test用的是最初生成的那个唯一正确密钥。所以循环中几乎所有情况都是用错误密钥解密,自然会触发这个异常。

另外要明确:Fernet的密钥是32字节的随机值(以URL-safe的Base64编码形式呈现),暴力破解的概率无限趋近于0,这种方式根本不可能找到正确密钥,属于无效操作。

如果想让脚本不频繁报错,你可以在解密时捕获这个异常,示例代码如下:

from cryptography.fernet import Fernet, InvalidToken

x = "test"

key = Fernet.generate_key()
f = Fernet(key)
x_encrypted = f.encrypt(x.encode())

while True:
    try:
        test_key = Fernet.generate_key()
        f_test = Fernet(test_key)
        result = f_test.decrypt(x_encrypted)
        print("找到正确密钥!", test_key)
        print("解密结果:", result.decode())
        break
    except InvalidToken:
        # 密钥错误,跳过继续循环
        pass

但仍需强调:这种暴力破解方式在现实场景中完全不可行,密钥空间过大,几乎没有成功的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:12:13