zoukankan      html  css  js  c++  java
  • KONGA下的HAMC插件功能 --JAVA代码实现

    设置HAMC插件


    postman模拟请发发送:

     Java代码:

    HMAC-SHA-256工具类

     1 import java.security.InvalidKeyException;
     2 import java.security.NoSuchAlgorithmException;
     3 import java.util.Formatter;
     4 import javax.crypto.Mac;
     5 import javax.crypto.spec.SecretKeySpec;
     6 
     7 public class HmacSha256Util {
     8 
     9     private static final String HMAC_SHA1_ALGORITHM = "HmacSHA256";
    10     private static String toHexString(byte[] bytes) {
    11         Formatter formatter = new Formatter();
    12         for (byte b : bytes) {
    13             formatter.format("%02x", b);
    14         }
    15         return formatter.toString();
    16     }
    17  
    18     public static String signature(String data, String key) throws NoSuchAlgorithmException, InvalidKeyException {
    19         SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
    20         Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
    21         mac.init(signingKey);
    22         return toHexString(mac.doFinal(data.getBytes()));
    23     }
    24  
    25     public static byte[] signatureReturnBytes(String data, String key) throws NoSuchAlgorithmException, InvalidKeyException {
    26         SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
    27         Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
    28         mac.init(signingKey);
    29         return mac.doFinal(data.getBytes());
    30     }
    31 
    32 }

    SHA-256 工具方法:

    public static String SHA256(String param) {
            if (StringUtils.isBlank(param)) {
                throw new IllegalArgumentException("param can not be null");
            }
            try {
                byte[] bytes = param.getBytes("utf-8");
                final MessageDigest md = MessageDigest.getInstance("SHA-256");
                md.reset();
                md.update(bytes);
                final Base64 base64 = new Base64();
                final byte[] enbytes = base64.encode(md.digest());
                return new String(enbytes);
            } catch (final NoSuchAlgorithmException e) {
                throw new IllegalArgumentException("unknown algorithm SHA-256");
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
        }

    测试:

     1 public class Test01 {
     2     
     3     @Test
     4     public void getSHA256() throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException{
     5          StringBuilder stb = new StringBuilder();
     6          String content = stb.append("Date: ").append(getTime()).append("
    ").append("abc: ").append("123456").append("
    ").append("Digest: SHA-256=").append(getBody()).toString();
     7          System.out.println("签名前的数据:"+content);
     8          String secret="kOI6ZHLGdgd2GB8osYZSl7QDCrHzAFg1";
     9          String signature2 = new String(Base64.getEncoder().encode(HmacSha256Util.signatureReturnBytes(content, secret)), "US-ASCII");    
    10         System.out.println("显示指定编码[推荐] signature:"+signature2);
    11        
    12     }
    13 public String getTime() {
    14         Date d=new Date();
    15         DateFormat format=new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
    16         format.setTimeZone(TimeZone.getTimeZone("GMT"));
    17         String hdate = format.format(d);
    18         return hdate;
    19     }
    20     
    21     
    22     public String getBody() throws UnsupportedEncodingException {
    23         String body = "{"item":[{"address":"hpSg3NXvBAdaDcaeGQiPFF9tciW9BmcQv8Qm"}]}";        
    24         String sha2562 = Sha256Util.SHA256(body);
    25         return sha2562;
    26     }  
    27     
    28 }

     最经过postman调试成功访问

  • 相关阅读:
    一个列表如何根据另一个列表进行排序(数组的相对排序)
    汉诺塔问题
    python面向对象基础
    python爬虫
    软件开发目录规范
    python--->包
    编译python文件
    python文件的俩种用途
    python模块的搜索路径
    python 循环导入的问题
  • 原文地址:https://www.cnblogs.com/vieta/p/12058357.html
Copyright © 2011-2022 走看看