python AttributeError: module 'cryptography.hazmat.primitives.hashes' has no attribute 'PBKDF2'
时间: 2024-12-30 10:31:44 浏览: 12
这个错误提示表示你在尝试使用`cryptography`库中的`PBKDF2`函数时出现了问题。实际上,在`cryptography`的最新版本中,`PBKDF2`已经被整合到了`hashes`模块下的`PKDF2HMAC`类中,而不是直接作为一个独立的属性。
以下是修改后的代码片段,用于使用`cryptography`库中的`PKDF2HMAC`函数:
```python
from cryptography.hazmat.primitives import hashes, hmac
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.backends import default_backend
def generate_AES_key(password: str, salt: bytes = None, key_length=16) -> bytes:
if not salt:
salt = os.urandom(16) # 如果未指定,这里使用系统熵池生成随机盐值
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=key_length,
salt=salt,
iterations=100000,
backend=default_backend()
)
return kdf.derive(password.encode())
# 其他部分保持不变
```
确保你的`cryptography`库是最新的,并按照上述代码更新生成AES密钥的部分。如果还是遇到问题,检查一下是否导入了正确的模块并确认版本兼容性。
阅读全文