如何修改PyJWT调用的cryptography方法默认参数unsafe_skip_rsa_key_validation
如何修改cryptography库
load_pem_private_key的默认参数值 你可以用Python的**猴子补丁(Monkey Patching)**直接修改第三方库函数的默认参数,不需要依赖注入或者实例化类,具体实现如下:
操作步骤
- 导入
load_pem_private_key所在的cryptography模块 - 定义一个包装函数,将
unsafe_skip_rsa_key_validation的默认值设为True,其余参数完全沿用原函数的定义 - 把原模块中的
load_pem_private_key替换成你的包装函数
代码示例
from cryptography.hazmat.primitives import serialization # 保存原函数引用,方便后续可能的恢复 original_load_pem_private_key = serialization.load_pem_private_key def patched_load_pem_private_key( data: bytes, password: bytes | None = None, backend=None, unsafe_skip_rsa_key_validation: bool = True # 修改默认值为True ): # 调用原函数并传递所有参数 return original_load_pem_private_key( data, password=password, backend=backend, unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation ) # 替换原函数,使补丁生效 serialization.load_pem_private_key = patched_load_pem_private_key
关键提醒
- 这段代码必须放在你调用PyJWT的
encode方法之前执行,确保补丁先生效 - 跳过RSA密钥验证存在安全风险,仅在你完全信任密钥来源的场景下使用
- 猴子补丁依赖于第三方库的函数签名,如果cryptography后续版本修改了
load_pem_private_key的参数定义,你的补丁可能会失效,需要同步调整
内容的提问来源于stack exchange,提问作者Blind Rabit
相关产品推荐
相关产品推荐

