zoukankan      html  css  js  c++  java
  • jmetr _MD5加密_获取签名

    要达到的目的:

    app每个请求里面 请求头都带有一个 sign 的参数,

    他的值是通过 开发自己设计的拼接方式 再通过md5加密生成

    我们就是要生成这个sign的值出来

    准备:

    和开发要到签名组成公式:  这里公司具体的签名算法已在我的百度云盘有详细讲解

    注意: 这里最后的拼接公式是 body(里的请求参数)+uid+token+version+time+"ibroker-wpd"

    body里面有多个参数&连接  (注意 这里自己踩了一个坑,没有加&,并且要按首字母大小排序)

     后记:

    (踩坑)

    用python写的时候忘记请求参数是用=号去拼接,用了:号 尴尬

    用BeanShell  写 md5的java 函数写法:

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;

    String MD5(String s) {
    try {
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] bytes = md.digest(s.getBytes("utf-8"));
    return toHex(bytes);
    }
    catch (Exception e) {
    throw new RuntimeException(e);
    }
    }

    String toHex(byte[] bytes) {

    final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
    StringBuilder ret = new StringBuilder(bytes.length * 2);
    for (int i=0; i<bytes.length; i++) {
    ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
    ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
    }
    return ret.toString();
    }

    String params = "version=1";
    String md5_src= params+vars.get("uid")+vars.get("token")+vars.get("app_version")+vars.get("timestamp")+vars.get("sign_salt");
    //log.info("md5_src:"+md5_src);
    String result = MD5(md5_src);
    //log.info("md5:"+result);
    vars.put("sign",result);

    踩坑: version=1 其实是 请求体参数里的请求参数 要使用&拼接

    最后的组成:(注意要使用後置的beanshell)

    源码和这个jmeter文件,存在在了我的百度云盘里面。

  • 相关阅读:
    ADFS登录界面自定义
    C# 不添加WEB引用调用WSDL接口
    C# 对象转XML 支持匿名类
    NSdata 与 NSString,Byte数组,UIImage 的相互转换
    《.NETer提高效率——环境部署》
    (五) Docker 安装 Nginx
    (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
    (七) Docker 部署 MySql8.0 一主一从 高可用集群
    (八) Docker 部署 mongodb
    (四) Docker 使用Let's Encrypt 部署 HTTPS
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/8976892.html
Copyright © 2011-2022 走看看