【问题标题】:base64 url safe removes =base64 url​​ 安全删除 =
【发布时间】:2018-06-05 22:05:05
【问题描述】:

以下代码(使用通用编解码器Base64):

  byte[] a = Hex.decodeHex("9349c513ed080dab".toCharArray());
  System.out.println(Base64.encodeBase64URLSafeString(a));
  System.out.println(Base64.encodeBase64String(a));

给出以下输出:

k0nFE-0IDas         //should be k0nFE-0IDas=
k0nFE+0IDas=

Base64.encodeBase64URLSafeString(a) 返回 k0nFE-0IDas 而不是 k0nFE-0IDas=。为什么会这样?

【问题讨论】:

    标签: java base64 padding apache-commons-codec


    【解决方案1】:

    为什么会这样?

    因为这就是 documented 要做的事情:

    注意:不添加填充。

    base64 字符串末尾的 = 字符称为填充。它们用于确保最终字符串的长度是 4 个字符的倍数 - 但就信息论而言,它们并不是真正需要的,因此只要将数据转换回二进制文件,删除它们是合理的使用不需要填充的方法。 Apache Codec Base64 类声称它可以透明地处理常规和 URL 安全的 base64,因此可能确实处理缺少填充。

    【讨论】:

    • 我错过了文档。谢谢
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 2018-11-22
    • 2017-08-25
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多