加密、编码、杂凑的区别为何?

2023年3月3日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

编码

编码并不会修改资料、也没有任何加密的效果,单纯就是换个方式来呈现,最有名的例子是摩斯编码:

摩斯编码
摩斯编码
圖片來源:https://en.wikipedia.org/wiki/Morse_code

而在软件开发上最常见的编码有

  • Base64 编码
  • URL 编码
  • ASCII
  • 霍夫曼编码

下方以 Base64 为例:

Base64

Base64 编码是一种将二进制数据转换为 ASCII 文本的方法,使得它可以轻松地在网络上传输或存储在文本文件中。它将二进制数据表示为 64 个可打印字符,包括字母、数字和符号。编码过程一次处理三个字节的数据,并将它们转换为四个可打印字符。这使得它成为在只支持文本数据的网络上传输二进制数据的有用编码方案,例如电子邮件。反向过程,将 Base64 字符串解码回其原始二进制数据也很简单。

Base64 encode
Base64 encode

加密

加密会用一组密钥针对数据作加密,若需要还原回加密的数据,也需要透过密钥才能够解密回来,而加密又分成对称式加密以及非对称式加密,以下各别来介绍:

对称式加密

对称式加密
对称式加密
圖片來源:https://www.ssl2buy.com/wiki/symmetric-vs-asymmetric-encryption-what-are-differences

对称式加密(Symmetric Encryption)使用单个密钥进行加密和解密。因此在对称式加密的讯息在传递时,寄件者与收件者的密钥是同一个,而要如何安全地将密钥传给对方,确保过程中不会被拦截,成为最大的问题。常见的演算法为 AES、DES 和 Blowfish 等。

非对称式加密

非对称式加密
非对称式加密
圖片來源:https://www.ssl2buy.com/wiki/symmetric-vs-asymmetric-encryption-what-are-differences

非对称式加密(Asymmetric Encryption)在创建时,会有两把密钥:公钥和私钥。公钥是公开的,可以被任何人获得,而私钥必须保密,只有拥有者才能使用。核心原理是:公钥可以解开私钥签名的档案,而私钥可以解开公钥加密的档案。

因为非对称式加密的复杂性高,因此加密速度会比对称式加密慢得多,但对于敏感数据的保护提高了更高的安全性。常见的非对称式加密演算法包括 RSA、Elliptic Curve Cryptography (ECC) 和 Diffie-Hellman 等。

杂凑

杂凑是一种将任意长度的数据,映射到固定长度的数字特征码的算法。以 md5 为例,它会根据某个杂凑函数将档案内容,计算出一个长度 128 bit 的杂凑值,因此若是两个不同的档案,则杂凑值会不相等。

杂凑
杂凑
圖片來源:https://www.technologycrowds.com/2019/09/how-to-compute-md5-hash-message-digest.html

而杂凑值是无法还原回原本数据的,比较常使用在数据校验、数字签名、数据存储索引等。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們