Python加密数据的方法,原来这么简单?!

2025-07-24 5:24:57 密语知识 思思

各位程序猿、小白粉丝们,你们是不是也曾被“数据加密”这四个字吓得不轻?好像听起来就高大上,离我们普通码农好远似的。别怕,今天咱们就来聊聊Python里那些简单又高效的加密数据方法,用最接地气的方式告诉你:加密没那么麻烦,咱也能轻松驾驭!

先抛个脑筋急转弯给你开开胃:有两个小偷,一个用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加密数据的小偷和写纸条的小偷,谁安全?答案当然是前者啦,因为他把秘密装进了迷宫,后者的秘密像裸奔,起码后者走个路都担心被邻居偷听!