Python常见的几种数据加密方式
数据加密是保护数据安全的重要手段。Python提供了多种加密方式,本文将介绍Python常见的几种数据加密方式,包括对称加密、非对称加密和哈希加密,并提供两个示例,分别演示如何使用Python实现对称加密和非对称加密。
对称加密
对称加密是指使用相同的密钥进行加密和解密的加密方式。常见的对称加密算法有DES、3DES、AES等。可以使用Python的cryptography
库来实现对称加密。以下是使用Python实现对称加密的步骤:
步骤1:生成密钥
首先,我们需要生成一个密钥。可以使用以下代码生成一个随机的AES密钥:
from cryptography.fernet import Fernet
# 生成AES密钥
key = Fernet.generate_key()
在这个代码中,我们使用Fernet
类生成一个随机的AES密钥。
步骤2:加密数据
接下来,我们需要使用密钥来加密数据。可以使用以下代码加密数据:
from cryptography.fernet import Fernet
# 生成AES密钥
key = Fernet.generate_key()
# 加密数据
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(b"Hello, world!")
在这个代码中,我们使用Fernet
类生成一个随机的AES密钥,并使用该密钥加密了一个字符串"Hello, world!"
。
步骤3:解密数据
最后,我们需要使用密钥来解密数据。可以使用以下代码解密数据:
from cryptography.fernet import Fernet
# 生成AES密钥
key = Fernet.generate_key()
# 加密数据
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(b"Hello, world!")
# 解密数据
plain_text = cipher_suite.decrypt(cipher_text)
在这个代码中,我们使用Fernet
类生成一个随机的AES密钥,并使用该密钥加密了一个字符串"Hello, world!"
。然后,我们使用相同的密钥解密了加密后的数据。
非对称加密
非对称加密是指使用不同的密钥进行加密和解密的加密方式。常见的非对称加密算法有RSA、DSA等。可以使用Python的cryptography
库来实现非对称加密。以下是使用Python实现非对称加密的步骤:
步骤1:生成密钥对
首先,我们需要生成一对密钥,包括公钥和私钥。可以使用以下代码生成一对RSA密钥:
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
在这个代码中,我们使用rsa
模块生成了一个2048位的RSA密钥对,包括私钥和公钥。
步骤2:加密数据
接下来,我们需要使用公钥来加密数据。可以使用以下代码加密数据:
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
# 加密数据
message = b"Hello, world!"
cipher_text = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
在这个代码中,我们使用公钥加密了一个字符串"Hello, world!"
。
步骤3:解密数据
最后,我们需要使用私钥来解密数据。可以使用以下代码解密数据:
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
# 加密数据
message = b"Hello, world!"
cipher_text = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 解密数据
plain_text = private_key.decrypt(
cipher_text,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
在这个代码中,我们使用公钥加密了一个字符串"Hello, world!"
,然后使用私钥解密了加密后的数据。
示例说明
下面是两个使用Python实现对称加密和非对称加密的示例:
示例1:对称加密
from cryptography.fernet import Fernet
# 生成AES密钥
key = Fernet.generate_key()
# 加密数据
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(b"Hello, world!")
# 解密数据
plain_text = cipher_suite.decrypt(cipher_text)
在这个示例中,我们使用Fernet
类生成一个随机的AES密钥,并使用该密钥加密了一个字符串"Hello, world!"
。然后,我们使用相同的密钥解密了加密后的数据。
示例2:非对称加密
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
# 加密数据
message = b"Hello, world!"
cipher_text = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 解密数据
plain_text = private_key.decrypt(
cipher_text,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
在这个示例中,我们使用RSA算法生成了一个2048位的RSA密钥对,包括私钥和公钥。然后,我们使用公钥加密了一个字符串"Hello, world!"
,并使用私钥解密了加密后的数据。
以上是Python常见的几种数据加密方式的完整攻略,包括对称加密、非对称加密和哈希加密。同时,我们提供了两个示例,分别演示如何使用Python实现对称加密和非对称加密。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python常见的几种数据加密方式 - Python技术站