编码(encoding)
编码本质上是信息形式的转化。
通过解码可以还原原始信息。
编码的目的是将消息转化成统一的格式,方便在不同系统之中传输。
例如最常见的ASCII字符编码。由于网络上只能传输二进制数据,任何数据如果想要经由网络传输,就必须先转化成二进制,ASCII 提供了一个将A、B、C等字母转化为二进制的规则。
例子:ASCII, Unicode, URL Encoding, Base64
摘要(digest)
摘要是通过散列函数对信息运算生成的固定大小的数字“指纹”。
相同信息使用同一散列函数生成的摘要总是相同,信息修改后生成的摘要总是与之前不同。
摘要信息不能被还原成原始信息。
摘要的目的是为了校验信息的完整性,保证信息在传输过程中不被篡改。
例如你在网络上需要下载一个非官方论坛软件,但又担心软件被第三方篡改,可以将该软件的md5值和官方下载的md5值进行对比,如果一致,则可放心使用。
例子:MD5, SHA, MAC
加密(encryption)
加密是将明文信息改变为难以读取的密文内容,使之不可读。
加密信息能通过密钥被还原为原始信息。
加密是为了保证信息安全,使得没有正确密钥的人不能获取信息内容。
例如你想给某人发送一封密信,或通过互联网给人发送密码,这些对隐秘性要求比较强的事情,就需要对信息进行加密。
例子:DES, AES, Blowfish, RSA
参考
编码、摘要、加密的区别
http://goldenera.me/2017/02/16/编码、摘要、加密的区别/