【发布时间】:2015-03-04 01:46:40
【问题描述】:
我必须使用使用 Base64 的加密算法,但是当我在线研究时,我发现论坛声明它是一种编码算法。这让我很困惑。 :(
Base64 是加密还是编码算法?我们如何区分这两者,除了一个是公开可破译的而另一个需要密钥的这一事实?
【问题讨论】:
-
加密的定义是使用密钥。
标签: encryption encoding base64 public-key-encryption
我必须使用使用 Base64 的加密算法,但是当我在线研究时,我发现论坛声明它是一种编码算法。这让我很困惑。 :(
Base64 是加密还是编码算法?我们如何区分这两者,除了一个是公开可破译的而另一个需要密钥的这一事实?
【问题讨论】:
标签: encryption encoding base64 public-key-encryption
这是一种编码算法(因此称为“Base64 编码”),允许人们在 ASCII 友好的环境中移动数据(即没有控制字符或任何不可打印的内容)。它应该为您提供良好的 XML 和 JSON 等可移植性。
编码是众所周知的,算法简单,因为它没有算法的“可变性”或密钥等概念,所以不被视为“加密”。
总之,任何人都可以对您的内容进行 Base64 解码,因此这不是加密。至少不能用作加密。它可能会让一个四岁的孩子难过,但就是这样。
【讨论】:
编码算法只是以另一种格式呈现数据。它不以任何方式试图隐藏数据,它只是以另一种语法表达相同的数据。 Base64就是这样一种编码算法。它仅使用 ASCII 字符对任意数据进行编码,这在许多可能无法正确处理非 ASCII 字符的情况下很有用。您可以整天来回编码和解码 Base64;没有秘密,没有保护,没有加密。
【讨论】:
编码和加密的区别在于您是否需要知道秘密才能恢复原始形式。 base64 是一种编码,因为您只需要知道编码/解码的算法。
当某物被加密时,会使用一个密钥,您需要知道密钥才能对其进行解密。有两种一般的加密类型:
【讨论】:
我们当然可以将 Base64 视为具有预设/固定密钥的替代密码,它也会将密文炸毁大约 4/3,但这不是一个非常有用的思考过程。它的主要属性是它将一些数据转换为另一种格式,而不需要一些额外的信息。所以它是一种编码算法。
请注意,Base64 有不同的变体,具有不同的字母,例如 URL 安全的变体(RFC4648 的表 2)。如果你可以设置字母和位置,那么这将是一种加密算法,但它不应该再被称为Base64了。
【讨论】: