base64是可逆编码而非加密,无密钥、可100%还原;aes/rsa是需密钥的可逆加密;hash不可逆且输出固定长度;所有操作均须基于一致编码格式的bytes。

Base64 不是加密,AES 和 RSA 才是——混淆这两类操作,轻则解码失败,重则误以为数据安全了。
为什么 base64.b64encode 解出来还是原文?
因为 Base64 是编码,不是加密。它只是把二进制数据(比如图片、中文字符串的 bytes)转成 A–Z、a–z、0–9、+、/ 这 64 个可打印字符组成的文本,方便在邮件、URL、JSON 等纯文本场景里传输。
- 没有密钥,不需要密钥,也根本不存在“破解”或“暴力解密”的概念
-
base64.b64decode能 100% 还原原始bytes,只要编码时没丢=填充符 - 常见错误:把用户密码用
base64“保护”后存数据库——等于明文存储
encrypt 和 hash 都返回一串字符串,怎么一眼分清?
看是否可逆、看是否依赖密钥、看输出长度是否固定:
-
encrypt(如AES.new、RSA.encrypt):需要密钥,可逆,输出长度随明文长度变化(AES-CBC 下会补块,但仍有规律) -
hash(如hashlib.sha256):无密钥,不可逆,输出永远是固定长度(SHA-256 恒为 64 位十六进制字符串) -
base64.b64encode:无密钥,可逆,输出长度 ≈ 原始字节数 × 4/3,末尾常带=
举个例子:b64encode('hello'.encode()) → b'aGVsbG8=';sha256('hello'.encode()).hexdigest() → '2cf24dba...'(64字符);AES 加密后 base64 编码 → 一长串无规律 base64,但解密必须用对密钥。
本程序源码为asp与acc编写,并没有花哨的界面与繁琐的功能,维护简单方便,只要你有一些点点asp的基础,二次开发易如反掌。 1.功能包括产品,新闻,留言簿,招聘,下载,...是大部分中小型的企业建站的首选。本程序是免费开源,只为大家学习之用。如果用于商业,版权问题概不负责。1.采用asp+access更加适合中小企业的网站模式。 2.网站页面div+css兼容目前所有主流浏览器,ie6+,Ch
立即学习“Python免费学习笔记(深入)”;
中文字符串直接 .encode() 就出错?关键在编码格式
Python 的 str 是 Unicode 字符串,不能直接加密或 base64 编码,必须先转成 bytes。而 .encode() 的参数决定了字节序列怎么生成:
-
'你好'.encode('utf-8')→b'\xe4\xbd\xa0\xe5\xa5\xbd'(3 字节/汉字) -
'你好'.encode('gbk')→b'\xc4\xe3\xba\xc3'(2 字节/汉字),但跨平台易乱码 - 所有加解密、哈希、base64 操作,都必须基于
bytes,且后续解密/解码时必须用**完全相同的编码格式**还原字符串 - 踩坑典型:用
utf-8编码加密,却用gbk解码 →UnicodeDecodeError或乱码
真正容易被忽略的,是「编码」和「加密」混用时的语义陷阱:你调用了 base64 函数,不等于做了安全处理;你用了 AES,但密钥硬编码在代码里、IV 每次写死、没校验 tag,那和没加差不多。









