from Crypto.Signature import PKCS1_OAEP ImportError: cannot import name 'PKCS1_OAEP' from 'Crypto.Signature'
时间: 2023-10-26 09:19:59 浏览: 255
这个错误通常是由于您的Crypto库版本太低导致的。PKCS1_OAEP是Crypto库的一部分,但是它只在较新的版本中可用。
您可以尝试通过更新Crypto库来解决此问题。如果您正在使用pip安装Crypto库,请运行以下命令来更新它:
```
pip install --upgrade pycrypto
```
如果您使用的是pycryptodome库,则需要运行以下命令:
```
pip install --upgrade pycryptodome
```
如果您已经安装了最新版本的Crypto库,但仍然遇到此错误,请检查您的Python环境是否正确配置,并且是否已正确安装Crypto库。
相关问题
from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 from Crypto.Hash import SHA256 No module named 'Crypto'如何修改
这个问题可能是因为您没有安装 PyCrypto 库。PyCrypto 是一个用于加密和解密的Python库,它包含了许多加密算法和协议的实现,如AES、RSA、DSA、Diffie-Hellman、MD5、SHA等。
您可以尝试使用 PyCryptodome,这是一个 PyCrypto 库的替代品,可以通过以下命令进行安装:
```
pip install pycryptodome
```
然后,您可以使用以下代码进行 RSA 签名:
```
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
# Generate a new private key
key = RSA.generate(2048)
# Create a SHA-256 hash object
hash_obj = SHA256.new(b'message to be signed')
# Create a signer object with the private key
signer = PKCS1_v1_5.new(key)
# Sign the hash object
signature = signer.sign(hash_obj)
# Verify the signature with the public key
public_key = key.publickey()
verifier = PKCS1_v1_5.new(public_key)
if verifier.verify(hash_obj, signature):
print("Signature is valid")
else:
print("Signature is invalid")
```
请注意,PyCryptodome 与 PyCrypto 的 API 有些不同,因此您需要在使用之前仔细查看文档。
pycryptodome用最新版的这个库会报错from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP ModuleNotFoundError: No module named 'Crypto'
根据您提供的引用内容,您使用的是pycryptodome库,而不是Crypto库。因此,您需要使用以下命令安装pycryptodome库:
```shell
pip install pycryptodome
```
安装完成后,您需要将您的代码中的Crypto更改为pycryptodome,例如:
```python
from Crypto.PublicKey import RSA # 更改为 from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP # 更改为 from Crypto.Cipher import PKCS1_OAEP
```
阅读全文