【问题标题】:Is Base64 an encryption or encoding algorithm?Base64 是加密还是编码算法?
【发布时间】:2015-03-04 01:46:40
【问题描述】:

我必须使用使用 Base64 的加密算法,但是当我在线研究时,我发现论坛声明它是一种编码算法。这让我很困惑。 :(

Base64 是加密还是编码算法?我们如何区分这两者,除了一个是公开可破译的而另一个需要密钥的这一事实?

【问题讨论】:

  • 加密的定义是使用密钥。

标签: encryption encoding base64 public-key-encryption


【解决方案1】:

这是一种编码算法(因此称为“Base64 编码”),允许人们在 ASCII 友好的环境中移动数据(即没有控制字符或任何不可打印的内容)。它应该为您提供良好的 XML 和 JSON 等可移植性。

编码是众所周知的,算法简单,因为它没有算法的“可变性”或密钥等概念,所以不被视为“加密”。

总之,任何人都可以对您的内容进行 Base64 解码,因此这不是加密。至少不能用作加密。它可能会让一个四岁的孩子难过,但就是这样。

【讨论】:

    【解决方案2】:

    编码算法只是以另一种格式呈现数据。它不以任何方式试图隐藏数据,它只是以另一种语法表达相同的数据。 Base64就是这样一种编码算法。它仅使用 ASCII 字符对任意数据进行编码,这在许多可能无法正确处理非 ASCII 字符的情况下很有用。您可以整天来回编码和解码 Base64;没有秘密,没有保护,没有加密

    【讨论】:

    • 如果在机器 A 上对字节数组进行编码,在机器 B 上解码字符串,字节数组是否仍然相同?
    • 如果算法定义了一个稳定的过程并且两台机器都正确地遵循了这个过程,是的。对于 base 64,这通常是肯定的。
    【解决方案3】:

    编码和加密的区别在于您是否需要知道秘密才能恢复原始形式。 base64 是一种编码,因为您只需要知道编码/解码的算法。

    当某物被加密时,会使用一个密钥,您需要知道密钥才能对其进行解密。有两种一般的加密类型:

    • 对称加密 = 加密和解密使用相同的密钥。使用这种加密的通信者都需要知道这个密钥。
    • 非对称加密 = 不同的密钥用于加密和解密。这也称为公钥加密,因为您可以将其中一个密钥设为众所周知(公开),同时将另一个密钥保密(私有)。这允许任何人使用公钥加密消息,而只有知道私钥的人才能解密,反之亦然。

    【讨论】:

    • 您能否解释一下为什么非对称加密与讨论相关?如果有的话,base64 可以被视为对称密码。
    【解决方案4】:

    我们当然可以将 Base64 视为具有预设/固定密钥的替代密码,它也会将密文炸毁大约 4/3,但这不是一个非常有用的思考过程。它的主要属性是它将一些数据转换为另一种格式,而不需要一些额外的信息。所以它是一种编码算法。

    请注意,Base64 有不同的变体,具有不同的字母,例如 URL 安全的变体(RFC4648 的表 2)。如果你可以设置字母和位置,那么这将是一种加密算法,但它不应该再被称为Base64了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多