python 非对称加密
时间: 2023-07-08 12:45:46 浏览: 118
基于python的非对称加密算法ecc
Python 提供了多种实现非对称加密的库,其中最常用的是 RSA 加密算法。RSA 算法是一种公钥加密算法,它可以用于加密和数字签名。在 RSA 算法中,公钥和私钥是一对密钥,其中公钥可以公开,任何人都可以使用它对数据进行加密,而私钥只有私有的所有者才能访问,用于解密数据或者签名。
在 Python 中,可以使用 Crypto 库来实现 RSA 加密。下面是一个简单的例子:
```python
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 生成密钥对
key = RSA.generate(2048)
# 获取公钥和私钥
private_key = key.export_key()
public_key = key.publickey().export_key()
# 使用公钥加密数据
cipher = PKCS1_OAEP.new(RSA.import_key(public_key))
encrypted_data = cipher.encrypt(b"Hello World!")
# 使用私钥解密数据
cipher = PKCS1_OAEP.new(RSA.import_key(private_key))
decrypted_data = cipher.decrypt(encrypted_data)
print(decrypted_data.decode()) # 输出: Hello World!
```
在这个例子中,首先使用 RSA.generate() 方法生成了一个 RSA 密钥对,然后使用 export_key() 方法获取了公钥和私钥。接着,使用公钥对一段数据进行了加密,并使用私钥对加密后的数据进行了解密。最后,输出了解密后的数据。
需要注意的是,在实际应用中,对于非对称加密算法,我们通常不会直接加密原始数据,而是会先使用对称加密算法加密原始数据,然后再使用公钥加密对称密钥,最后将加密后的对称密钥和加密后的密文一起发送给接收方。接收方使用私钥解密对称密钥,然后使用对称密钥解密密文。这样做的好处是可以避免使用非对称加密算法对大量数据进行加密和解密,从而提高效率。
阅读全文