php jwt实现的一个代码问题,没看明白,大佬指点下

图片.png

        $remainder=strlen($input) % 4;
        if($remainder)
        {
           $addlen=4-$remainder;
           $input.str_repeat("=",$addlen);
        }
        
        
  为什么要取余,没看明白??大佬解释下
阅读 1.4k
1 个回答

因为这里为了便于传输,使用了 base64url_encode,会把部分字符串进行替换。
当需要decode 时,要根据 base64 的规则填充 =

如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。在编码后的Base64文本后加上一个或两个=号,代表补足的字节数。也就是说,当最后剩余两个八位(待补足)字节(2个byte)时,最后一个6位的Base64字节块有四位是0值,最后附加上两个等号;如果最后剩余一个八位(待补足)字节(1个byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号。

参考 base64_encode_url 与 base64_encode 它们的应用场景有什么区别呢?

推荐问题