各位程序猿、小白粉丝们,你们是不是也曾被“数据加密”这四个字吓得不轻?好像听起来就高大上,离我们普通码农好远似的。别怕,今天咱们就来聊聊Python里那些简单又高效的加密数据方法,用最接地气的方式告诉你:加密没那么麻烦,咱也能轻松驾驭!
好了,进入正题。Python的加密库实在太多了,拿上搜索的十几篇干货堆砌,我给你归纳几个让人一看就会用的招数。走起来!
1. hashlib——基础又好用的哈希加密
想给密码做个单向加密,避免明文存储?hashlib能帮忙搞定。这个库已经内置,没得装,直接调用。支持MD5、SHA-1、SHA-256和更多算法。比如你整一个字符串“hello”,用SHA-256加密的代码就像这样:
import hashlib
data = "hello"
sha256 = hashlib.sha256()
sha256.update(data.encode('utf-8'))
print(sha256.hexdigest())
输出一串长长的哈希值,美滋滋!这个哈希加密的重点是单向,改数据变哈希,逆向几乎不可能,密码安全的第一步啊!
2. cryptography库——给数据来个大保镖
要对数据进行对称加密(加密解密用同一把钥匙),那就用cryptography最靠谱,功能强大又活泼。推荐用它的Fernet模块,操作简单,安全性也足够高。
示例:用Fernet做个加密解密的小演示:
from cryptography.fernet import Fernet
key = Fernet.generate_key() # 生成密钥
f = Fernet(key)
token = f.encrypt(b"秘密数据")
print(token)
original = f.decrypt(token)
print(original)
看到没?一行代码生成密钥,一行加密,一行解密,妥妥的。密钥千万别丢哦,丢了就没法打开加密的数据,那就尴尬了。
3. PyCryptodome——全能战士,啥算法都能用
想玩点花样,像AES、DES这种对称加密,或者RSA这种非对称加密,PyCryptodome包你满意。替代了过去的PyCrypto,更加安全和现代。
用AES加密的简易示范:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
key = b'16byteslongkey!!' # 16字节的密钥
data = b"这是一段需要加密的数据"
cipher = AES.new(key, AES.MODE_CBC)
ct_bytes = cipher.encrypt(pad(data, AES.block_size))
iv = cipher.iv
print("密文:", ct_bytes)
print("iv:", iv)
# 解密
cipher_dec = AES.new(key, AES.MODE_CBC, iv)
pt = unpad(cipher_dec.decrypt(ct_bytes), AES.block_size)
print("解密后:", pt.decode())
看到没,AES这种加密还得讲究块大小和填充,你不想折腾,可以直接用Fernet,那是它的简单小弟弟版本。
4. base64编码——看着像“加密”,其实更像伪装
很多人会混淆base64编码和真正的加密。说白了,base64只是把二进制数据以文本形式展示,更方便传输,但不能抵御任何攻击。就像给秘密穿了件透明加了点花纹的衣服,别人一看全透。
Python里用起来超简单:
import base64
data = "想偷看吗?"
encoded = base64.b64encode(data.encode())
decoded = base64.b64decode(encoded).decode()
print("编码:", encoded)
print("解码:", decoded)
提示:只是防止乱码,千万别拿它当加密用,不然密码给人一看就尴尬了。
5. 非对称加密RSA——发消息不怕截胡
非对称加密,最经典的代表就是RSA,用一把公钥加密,只有持有私钥的人才能解密。特别适合网络通信,偷偷给好友发情报。
示例使用PyCryptodome:先生成密钥对,然后演示加解密。
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()
message = b"我的小秘密"
# 用公钥加密
rsa_pub = RSA.import_key(public_key)
cipher_pub = PKCS1_OAEP.new(rsa_pub)
ciphertext = cipher_pub.encrypt(message)
print("加密后:", ciphertext)
# 用私钥解密
rsa_priv = RSA.import_key(private_key)
cipher_priv = PKCS1_OAEP.new(rsa_priv)
plaintext = cipher_priv.decrypt(ciphertext)
print("解密后:", plaintext.decode())
别问我,明明就是一段代码,我为什么那么飘逸——那是因为你看明白了,解释完瞬间感觉自己是密码侠!
6. 密码安全小贴士
用Python加密数据,光掌握加密算法还不够,咱得保证密钥的安全。钥匙丢了,秘密换新了吗?是不是就要哭出来了?
所以密钥最好别写死在代码里,或者直接暴露在git仓库,更不能发朋友圈炫耀。可以用环境变量、密钥管理服务来存储,实在不会也要密码管理器帮忙。
啥?你说密钥太长看着眼花?咱还有一个小神器:钥匙派生函数(KDF),帮你用一个小密码生成复杂密钥,多安全,多方便。
7. 一句话推荐
玩游戏想要赚零花钱就上七评赏金榜,网站地址:bbs.77.ink,顺带了解下这块安全的事儿,搞笑又赚钱,何乐而不为?
说到底,Python加密数据,模块选择看你的需要和技术栈:hashlib适合哈希单向,用cryptography的Fernet最轻松,PyCryptodome给你全套武器库,base64只能当“伪装面具”,RSA适合通信安全。
那么回到脑筋急转弯,那个用Python加密数据的小偷和写纸条的小偷,谁安全?答案当然是前者啦,因为他把秘密装进了迷宫,后者的秘密像裸奔,起码后者走个路都担心被邻居偷听!