当前位置:   article > 正文

计算HMAC-SHA1签名,并对签名结果做URL安全的Base64编码

计算HMAC-SHA1签名,并对签名结果做URL安全的Base64编码

系列文章目录


文章目录


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


Base64能够将二进制转码成可见字符方便进行http传输,可是base64转码时会生成“+”,“/”,“=”这些被URL进行转码的特殊字符,致使两方面数据不一致。

能够在发送前将“+”,“/”,“=”替换成URL不会转码的字符,接收到数据后,再将这些字符替换回去,再进行解码,将避免该问题。
在这里插入图片描述
我们以hutool为例,以下是其Base64源码:

package cn.hutool.core.codec;
 
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
 
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;
 
/**
 * Base64工具类,提供Base64的编码和解码方案<br>
 * base64编码是用64(2的6次方)个ASCII字符来表示256(2的8次方)个ASCII字符,<br>
 * 也就是三位二进制数组经过编码后变为四位的ASCII字符显示,长度比原来增加1/3。
 *
 * @author Looly
 */
public class Base64 {
   
 
   private static final Charset DEFAULT_CHARSET = CharsetUtil.CHARSET_UTF_8;
   // -------------------------------------------------------------------- encode
 
   /**
    * 编码为Base64,非URL安全的
    *
    * @param arr     被编码的数组
    * @param lineSep 在76个char之后是CRLF还是EOF
    * @return 编码后的bytes
    */
   public static byte[] encode(byte[] arr, boolean lineSep) {
   
      return lineSep ?
            java.util.Base64.getMimeEncoder().encode(arr) :
            java.util.Base64.getEncoder().encode(arr);
   }
 
   /**
    * 编码为Base64,URL安全的
    *
    * @param arr     被编码的数组
    * @param lineSep 在76个char之后是CRLF还是EOF
    * @return 编码后的bytes
    * @since 3.0.6
    * @deprecated 按照RFC2045规范,URL安全的Base64无需换行
    */
   @Deprecated
   public static byte[] encodeUrlSafe(byte[] arr, boolean lineSep) {
   
      return Base64Encoder.encodeUrlSafe(arr, lineSep);
   }
 
   /**
    * base64编码
    *
    * @param source 被编码的base64字符串
    * @return 被加密后的字符串
    */
   public static String encode(CharSequence source) {
   
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/493570
推荐阅读
  

闽ICP备14008679号