如果需要不可逆加密算法的话,可以考虑MD5算法,我之前写过博文:Python如何实现MD5加密
可逆加密算法里,对称加密算法指的是加密和解密时使用同样的秘钥,非对称加密算法指的是用不同的秘钥。
Fernet算法是一个对称加密算法,可以设置一个字符串(key_string)生成秘钥:
import hashlib,base64
def string_to_fernet_key(input_string):
hash_object = hashlib.sha256(input_string.encode())
hash_digest = hash_object.digest()
key_bytes = hash_digest[:32]
base64_key = base64.urlsafe_b64encode(key_bytes)
return base64_key.decode('utf-8')
如果秘钥格式不符合要求的话会报这个错误:ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
对原文(plain_text)进行加密:
from cryptography.fernet import Fernet
key=string_to_fernet_key(key_string)
cipher = Fernet(key)
plain_text_bytes = plain_text.encode("utf-8")
encrypted_text = cipher.encrypt(plain_text_bytes)
对密文(encrypted_text)进行解密:
from cryptography.fernet import Fernet
key=string_to_fernet_key(key_string)
cipher = Fernet(key)
decrypted_text = cipher.decrypt(encrypted_text)
plain_text = decrypted_text.decode("utf-8")
参考资料: