数码知识屋
霓虹主题四 · 更硬核的阅读氛围

编码、加密、解密:别再傻傻分不清了

发布时间:2025-12-10 08:18:23 阅读:19 次

编码不是加密,别搞混了

很多人在开发中经常把“编码”和“加密”当成一回事。比如看到 URL 里一堆 %E7%B1%BB%E5%9E%8B 就觉得是加密,其实这只是 URL 编码而已。编码的本质是换一种格式表示数据,方便传输或存储,不涉及安全保护。

常见的编码方式有 Base64、URL 编码、Unicode 转义等。它们的特点是可逆,而且算法公开。比如下面这段 Base64:

SGVsbG8gV29ybGQh

一眼就能看出来是 Hello World! 的 Base64 编码结果。用浏览器控制台一解就出来了:

atob('SGVsbG8gV29ybGQh') // 返回 'Hello World!'

加密是为了防人看

加密的目的完全不同——是为了不让别人知道内容。它需要密钥参与,没有密钥,就算你拿到数据也看不懂。比如你在网页提交密码,后台通过 HTTPS 传过去,中间就算被截获,看到的也是一堆乱码。

对称加密像一把钥匙开一把锁,加密和解密都用同一个密钥。比如 AES:

<script>
const encrypted = CryptoJS.AES.encrypt('我的秘密', 'key123');
console.log(encrypted.toString());
// 输出类似:U2FsdGVkX19jx+...nR0=
</script>

拿到这段密文的人,必须知道密钥 'key123' 才能还原原文。否则光看字符串毫无意义。

非对称加密更安全

比如 HTTPS 用的 RSA,有一对密钥:公钥和私钥。公钥可以公开,用来加密;私钥必须保密,用来解密。就像你往信箱投信,谁都能投(公钥加密),但只有邮差有钥匙打开取信(私钥解密)。

解密是加密的逆过程

编码有“解码”,加密才有“解密”。这两个词不能乱用。Base64 解码是还原原始数据,而 AES 解密是用密钥还原被保护的内容。

举个生活例子:你把日记转成摩斯密码(编码),朋友懂规则就能读;但如果你用密码本加了一层暗号(加密),哪怕他知道是摩斯密码,没密码本也白搭。

开发中常见错误是把 Base64 当加密用,以为别人看不懂就是安全。其实只要一解码,明文直接暴露。真要保护数据,得上 AES 或 RSA 这类加密算法。

工具选对了,事半功倍。编码用于传输适配,加密用于安全保障,搞清区别,代码才靠谱。