编码与加密的区别

176

编码和加密有什么区别?

9
简化翻译:初步了解,加密使用密钥,编码则不使用。 - President James K. Polk
1
如果你解码了一个编码数据,干得好;但是如果你在不知道秘密密钥的情况下解密了加密数据,那么恭喜你,你已经破解了它。 - sujeet
1
编码就像将语言A翻译成语言B,以便懂得语言B的人轻松理解。加密就像以某种方式将语言A翻译成语言B,只有特定懂得语言B的人才能理解,通常在开始翻译之前会告诉他们方法或密钥,就像把石榴视为手榴弹一样。 - sujeet
11个回答

226

编码是使用公开可用的方案将数据转换为另一种格式,以便可以轻松地进行反转。

加密将数据转换为另一种格式,以使只有特定个人才能反转该转换。

总结:

编码用于维护数据可用性,并使用公开可用的方案。

加密用于维护数据机密性,因此反转转换的能力(密钥)仅限于特定人员。

更多细节请查看来源


5
你认为“使用公钥签名的文件”是编码还是加密? :) - Jarod42
1
@Jarod42 数字签名既不是文档的加密,也不是编码,因为原始数据无法从中恢复。 - Thilo
2
“使用公开可用的方案” - 加密确实使用公开可用的方案,事实上,任何值得自己分量的加密方案都是公开可用的(即在公众视野中没有后门)。不公开可用的部分是解密数据所需的秘密,而不是实际的方案/算法(例如RSA、DH等)。 - PragmaticProgrammer
有一篇关于加密、编码和哈希的差异的好文章,网址为https://www.packetlabs.net/encryption-encoding-and-hashing/。 - MB_18

51

编码:

  1. 目的:编码的目的是将数据转换为可以被不同类型系统正确(和安全)消费的形式。

  2. 用途:维护数据可用性,即确保它能够被正确消费。

  3. 数据检索机制:没有密钥,只要我们知道使用了什么编码算法,就可以轻松地进行反向操作。

  4. 所使用的算法:ASCII、Unicode、URL 编码、Base64。

  5. 示例:通过电子邮件发送二进制数据,或在网页上查看特殊字符。

加密:

  1. 目的:加密的目的是将数据变换以保持它对他人的保密。

  2. 用途:维护数据的机密性,即确保数据只能被预期的接收者消费。

  3. 数据检索机制:如果我们知道加密密钥和算法,就可以获取原始数据。

  4. 所使用的算法:AES、Blowfish、RSA。

  5. 示例:向某人发送只有他们才能阅读的秘密信件,或在互联网上安全地发送密码。

参考 URL:http://danielmiessler.com/study/encoding_vs_encryption/


35

编码是将数据转换为可以在通信渠道上传输或在存储介质上存储而不会出现危险的过程。例如,计算机硬件无法处理文本,它只能处理字节,因此文本编码是一种描述如何将文本转换为字节的方法。同样地,HTTP不允许所有字符都安全传输,因此可能需要使用 base64 对数据进行编码(该编码仅使用字母、数字和两个安全字符)。

在编码或解码时,重点是每个人都拥有相同的算法,而且该算法通常是有良好记录、广泛分布并且相当易于实现的。任何人最终都能够解码已编码数据

另一方面,加密应用于一段数据的转换,只有具有特定(秘密)知识才能反向解密。其强调的是使除预期收件人以外的人难以阅读原始数据。保持秘密的编码算法是一种加密形式,但相当脆弱(设计任何加密都需要技巧和时间,并且根据定义,您不能让其他人为您创建这样的编码算法——否则您就必须杀了他们)。相反,最常用的加密方法使用秘密密钥:该算法是众所周知的,但加密和解密过程需要具有相同密钥,并且该密钥随后保持秘密。只有使用相应密钥才能解密加密数据


加密和解密并不总是需要相同的密钥。难道Diffie-Hellman不是使用发送者的私钥进行编码,接收者的私钥进行解码吗? - David Mann
HTTP不允许所有字符安全传输...我认为这是误导性的。HTTP是8位清洁的。您可以在HTTP消息正文中传输任何字节。标头规定为ASCII,但这与“安全”传输无关。 - Hawkeye Parker

11

编码是将一系列字符放入特殊格式以进行传输或存储的过程。

加密是将数据翻译成秘密代码的过程。加密是实现数据安全的最有效方法。要阅读加密文件,必须拥有能够解密它的秘密密钥或密码。未加密的数据称为明文;加密数据称为密文。


10

编码用于维护数据的可用性,可以通过使用相同的算法解码内容来恢复,即不需要使用密钥。

加密用于维护数据的机密性,需要使用保密的密钥才能返回明文。

此外,在安全领域中有两个主要术语引起了混淆哈希和混淆

哈希用于通过检测哈希输出的明显更改来验证内容的完整性。

混淆用于防止人们理解某些东西,经常与计算机代码一起使用,以帮助防止成功的逆向工程和/或窃取产品的功能。

阅读更多 @ Danielmiessler文章


1
编码是理解字符集的能力。根据读写文件的内容,例如UTF-8、UTF-16、UTF-32、ANSI等。加密是对已经编码的数据进行转换。 - Arun

4
看待编码是一种在不同系统之间存储或通信数据的方式。例如,如果您想在硬盘上存储文本,就需要找到一种将字符转换为比特的方式。另外,如果您只有一个手电筒,您可能希望使用摩尔斯电码对您的文本进行编码。结果始终是“可读的”,只要您知道它是如何存储的。
加密意味着您希望通过使用算法来加密数据而使其无法读取。例如,凯撒密码曾经通过替换每个字母来实现此目的。结果在这里是无法阅读的,除非您知道用于加密的秘密“密钥”。

3

编码 -》 例如数据为16
那么编码为10000,意味着它是二进制格式、ASCII或UNICODE等,可以轻松地被任何系统读取并易于理解其真实含义。

加密 -》 例如数据为16 然后加密为3t57或可能是其他的,这取决于使用哪种加密算法。 只有拥有解密密钥的人才能够理解其真实含义,虽然可以轻松地被任何系统读取。


3
我认为这两种操作都是将信息从一种形式转换为另一种形式,它们的区别在于:
- 编码(Encoding)意味着将信息从一种形式转换为另一种形式,在大多数情况下,这种转换是很容易可逆的。 - 加密(Encryption)意味着原始信息被隐藏,并涉及到必须提供给加密/解密过程以执行转换的“加密密钥”。
因此,如果涉及(对称或非对称)密钥(也称为“秘密”),那么它就是加密,否则就是编码。

2

这两者有所不同。编码是指在将文本转换为特定的计算机编码技术时使用的编码方式,而加密则是指将数据隐藏在特定的密钥或文本之间。


0

编码是将给定的字符集转换为相关的接受格式的过程,以此问题的URL为例:

  • 我们看到的是-->

    hhttps://dev59.com/questions/9W445IYBdhLWcg3w3N6z

  • 在传输过程中,它将被转换为-->

    https%3A%2F%2Fstackoverflow.com%2Fquestions%2F4657416%2Fdifference-between-encoding-and-encryption

^ 这是使用ASCII字符集进行URL编码的示例,其中:

  • : = %3A

  • / = %2F

编码的反向操作是解码,以便以给定的ASCII标准返回原始形式。


加密是将明文转换为密文的过程,只有授权方才能解密。

  • 例如,如果仅移动3个字符,那么简单的“HELLO”就会被加密成“KHOOR”。

附言:编码(以某种形式编码)是一种加密形式。:)

什么是加密


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接