You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构造字符串使Base64编码生成斜杠以测试Base64URL函数

解决方法

要让输入字符串的标准Base64编码包含/,你需要构造字节序列,使得某个3字节分组编码后生成Base64的/(对应6位全1的二进制值111111,索引63)。具体可以通过以下方式修改输入字符串:

  • 方案1:调整现有字符,保留Base64结尾的=
    原输入字符串长度为128字节(3×42+2),标准Base64结尾会带一个=。你可以修改字符串中某个3字节分组的第三个字符,让其对应的字节低6位为全1。比如把原字符串中最后一个字符\u007f(DEL,ASCII 0x7F)替换为?(ASCII 0x3F),此时最后一个3字节分组(}、~、?,对应字节0x7D、0x7E、0x3F)的Base64编码为fn8/,标准Base64结果会包含/,同时结尾保留=。

    修改后的字符串示例:

    var allAciiChars = "\0\u0001\u0002\u0003\u0004\u0005\u0006\a\b\t\n\v\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}?";
    
  • 方案2:调整字符串长度,生成含/的分组
    若不想修改现有字符,可以去掉原字符串的前两个字符(\0和\u0001),让总长度变为126字节(刚好是3的倍数),此时最后一个3字节分组(}、~、\u007f,对应字节0x7D、0x7E、0x7F)的Base64编码为fN9/,标准Base64结果会包含/。如果需要保留Base64结尾的=,可以再去掉一个字符,让总长度变为125字节(3×41+2),此时标准Base64结尾会带一个=,同时仍包含/。

修改后,你需要重新计算expectedEncodedString:先获取输入字节的标准Base64编码,再将其中的+替换为-、/替换为_,最后去掉末尾的=即可。

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:05:01