• 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调试成功访问

  • 相关阅读:
    系统架构设计师软考总结
    统一用户认证系统CUAS实现要点
    Activiti使用总结
    性能优化总结篇
    CVE-2016-5734-phpmyadmin-4.0.x-4.6.2-代码执行
    WooYun-2016-199433 -phpmyadmin-反序列化-getshell
    CVE-2015-1635-HTTP.SYS远程执行代码
    泛微OA 多版本存在命令执行
    CVE-2019-20372-Nginx error_page 请求走私
    通达OA 页面敏感信息-2013/2015版本
  • 原文地址:https://www.cnblogs.com/vieta/p/12058357.html
Copyright © 2020-2023  润新知