Python 的密码学库是一个用于加密和解密数据的综合工具包。要使用密码加密字符串,您可以利用 Fernet 类,该类提供强大的加密功能,并包括时间戳、HMAC 签名和 Base64 编码等基本功能。
<code class="python">from cryptography.fernet import Fernet, FernetException password = 'mypass' fernet = Fernet(password.encode()) encrypted_message = fernet.encrypt(b'John Doe') decrypted_message = fernet.decrypt(encrypted_message) print(encrypted_message) # Encrypted string print(decrypted_message.decode()) # 'John Doe'</code>
Fernet 通过应用多层加密并通过 HMAC 签名确保消息完整性来保证加密数据的安全。
直接在 Fernet 中使用密码很方便,使用密码生成密钥更安全。此方法涉及使用密钥派生函数从密码和盐派生密钥。
<code class="python">import secrets from cryptography.fernet import Fernet from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC backend = default_backend() salt = secrets.token_bytes(16) # Generate a unique salt password = 'mypass'.encode() # Convert password to bytes kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=backend ) key = b64e(kdf.derive(password)) # Derive the secret key fernet = Fernet(key) encrypted_message = fernet.encrypt(b'John Doe')</code>
此方法通过使用从密码派生的强密钥为加密过程添加额外的保护层来增强安全性
除了 Fernet,您可以根据您的具体要求考虑替代方案:
Base64 模糊:对于基本混淆,可以使用base64编码,无需加密。但是,这并不能提供任何实际的安全性,而只是模糊性。
HMAC 签名: 如果您的目标是数据完整性,请使用 HMAC 签名来确保数据未被篡改。
AES-GCM 加密: AES-GCM 使用 Galois/Counter 模式块加密来提供加密和完整性保证,类似于 Fernet,但没有用户友好的功能。
以上是如何在 Python 中使用密码安全地加密和解密字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!