加密听起来是技术人员才需要关心的事。但实际上,加密已经渗透到你日常生活的每个角落——网购时浏览器地址栏的小锁、微信支付的密码验证、甚至手机解锁……理解几个基本概念,能帮你更好地保护自己的数字安全。

加密基础

三个容易混淆的概念:编码、哈希、加密

先把这三个最常被搞混的概念理清楚。

编码(Encoding)不是安全技术。它只是把数据转换成另一种格式,方便存储或传输。Base64是最常见的编码方式——把二进制数据转成ASCII字符串。编码是可逆的,有标准规则,任何人都能解码。URL编码、HTML实体编码都是同一个道理。

哈希(Hashing)是单向的——输入可以变成固定长度的输出,但反过来不行。MD5SHA-256都是哈希算法。哈希常用于:验证文件完整性(下载文件和官网的哈希对照)、密码存储(网站存的是哈希不是明文密码)。

加密(Encryption)是可逆的——有密钥就能解密出来。对称加密用同一把钥匙,AES是典型代表。非对称加密用公钥加密、私钥解密,RSA和椭圆曲线是代表。HTTPS传输数据用的就是TLS加密。

对称加密和非对称加密有什么区别?

对称加密就像一把钥匙开一把锁。你用钥匙锁门,别人用同一把钥匙开门。好处是速度快,坏处是——你怎么把钥匙安全地交给对方?

非对称加密解决这个问题。它用一对密钥:公钥和私钥。公钥可以公开,谁都能用公钥加密数据;但只有私钥持有者能解密。比如你想给我发加密消息,你拿到我的公钥(这不需要保密),把消息加密后发给我,只有我能用我的私钥解密。

缺点是速度慢。所以实际应用中,往往用非对称加密来安全交换一个对称密钥(叫做"会话密钥"),然后用对称加密来传输实际数据。HTTPS就是这么工作的。

密码应该怎么存?

网站不应该存你的明文密码。如果数据库被黑,攻击者拿到的应该是密码的哈希值,而不是密码本身。

但普通哈希还不够——因为相同密码的哈希值相同,攻击者可以预计算"彩虹表"来快速破解。所以现代密码存储用"加盐哈希"(salted hash)或专门的密码哈希算法如 bcrypt、Argon2。

简单说就是:每次存密码时随机生成一个"盐"(salt),把盐和密码一起哈希,存盐和哈希值。下次登录时,用相同的盐重新哈希比对。这样即使用户密码相同,存储的哈希值也不同彩虹表攻击就失效了。

HTTPS有什么用?

HTTP是明文传输的——你在咖啡馆用公共WiFi浏览网页,你的上网内容可以被同一网络的人监听到。这在技术上叫"中间人攻击"。

HTTPS在HTTP的基础上加了TLS加密层。你访问一个HTTPS网站时,浏览器和服务器会协商出一个加密通道——这个过程叫做TLS握手。握手完成后,所有传输的数据都是加密的,即使被截获也是乱码。

怎么判断网站有没有用HTTPS?就看地址栏左侧有没有小锁图标。如果你在输入密码或信用卡信息的页面看到"不安全"的提示,不要继续操作。

密码设置要注意什么?

第一,长度比复杂度更重要。"correct horse battery staple"(7个随机单词)比 "Tr0ub4dor&3"(复杂但短)强得多,也更容易记。我们的 密码生成器 支持生成各种长度的随机密码。

第二,不同网站不要用同一个密码。用一个密码泄露了,所有账户都危险。密码管理器是解决密码疲劳的最佳方案。

第三,开启双因素认证(2FA)。密码只是第一因素,手机短信验证码或身份验证器生成的临时码是第二因素。即使密码泄露,没有第二因素也很难登录。

加密工具能做什么?

IRFJZ的工具涵盖了几大类常见的加密相关操作:

编码转换:Base64、URL编码、十六进制、二进制等,这些不是真正的加密,但在数据处理中经常用到。

哈希生成:MD5、SHA系列、bcrypt等,用于校验文件、生成密码哈希。

对称加密:AES、DES、RC4等,用同一把密钥加密和解密。

古典密码:凯撒密码、维吉尼亚密码、Enigma等,这些是密码学学习的好工具,原理简单但历史上曾被广泛使用。

理解这些工具背后的原理,比单纯使用工具更有价值。当你理解了凯撒密码的移位机制,你就能理解为什么现代密码需要足够长的密钥和安全的算法。