RSAAlgorithm
PyJWT 算法方法无法导入,但我确实安装了
PyJWT
错误:
ImportError: cannot import name 'RSAAlgorithm' from 'jwt.algorithms'
我通过运行以下命令检查了该包是否可用:
poetry show|grep -i pyjwt
pyjwt 2.9.0 JSON Web Token implementation in...
遇到的错误“ImportError:无法从'jwt.algorithms'导入名称'RSAAlgorithm'”表示使用的 PyJWT 版本(2.x)不再支持
RSAAlgorithm
。从 PyJWT 版本 2.0.0 开始,
RSAAlgorithm
及其他非对称算法被移至一个单独的包,名为
cryptography
。
以下是如何解决此问题的步骤:
-
安装
cryptography
包:
可以使用 pip 安装
cryptography
包:
bash
pip install cryptography
-
导入
RSAAlgorithm
从cryptography.hazmat.primitives.asymmetric.rsa
:
需要更改代码中的导入语句,如下所示:
python
from cryptography.hazmat.primitives.asymmetric.rsa import RSAAlgorithm, RSA_OAEP, OASPSHA256
这将从
cryptography
包中导入
RSAAlgorithm
类,现在应该可以使用它了。
完整代码示例:
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric.rsa import RSAAlgorithm, RSA_OAEP, OASPSHA256
from cryptography.hazmat.backends import default_backend
# ... 的代码 ...
# 加载的 RSA 私钥
with open('path/to/your/private_key.pem', 'rb') as key_file:
private_key = serialization.load_pem_private_key(
key_file.read(),
password=None,
backend=default_backend()
)
# 创建 RSA 算法对象
algorithm = RSAAlgorithm(
padding=RSA_OAEP(
mgf=OASPSHA256(),
algorithm=SHA256(),
label=None
),
hash_algorithm=SHA256()
)
# ... 使用 algorithm 对象进行签名或验证 ...
完成这些更改后,的代码应该可以正常工作,而不会出现
ImportError
。