• 加解密


    
    
    
    
     1 public static void main(String[] args) {
     2        SortedMap<Object,Object> parameters = new TreeMap<Object,Object>();
     3        //String mfrchant_id="fffff";
     4        String merchant_id="190010002";
     5        String business_type="1005";
     6        String out_trade_no="1400000001";
     7        String key="3A4BC4A4000CF1B5FFA9E351E6C1539E";
     8        //parameters.put("mfrchant_id", mfrchant_id);
     9        parameters.put("merchant_id", merchant_id);
    10        parameters.put("business_type", business_type);
    11        parameters.put("out_trade_no",out_trade_no);
    12        String characterEncoding = "UTF-8";         //指定字符集UTF-8
    13        String mySign = createSign(characterEncoding,parameters,key);
    14        log.info(mySign);
    15        //System.out.println("我 的签名是:"+mySign);
    16    }
    17 
    18 public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters,String key){
    19     StringBuffer sb = new StringBuffer();
    20     StringBuffer sbkey = new StringBuffer();
    21     Set es = parameters.entrySet();  //所有参与传参的参数按照accsii排序(升序)
    22     Iterator it = es.iterator();
    23     while(it.hasNext()) {
    24         Map.Entry entry = (Map.Entry)it.next();
    25         String k = (String)entry.getKey();
    26         Object v = entry.getValue();
    27         //空值不传递,不参与签名组串
    28         if(null != v && !"".equals(v)) {
    29             sb.append(k + "=" + v + "&");
    30             sbkey.append(k + "=" + v + "&");
    31         }
    32     }
    33     //System.out.println("字符串:"+sb.toString());
    34     sbkey=sbkey.append("key="+key);
    35     System.out.println("字符串:"+sbkey.toString());
    36     //MD5加密,结果转换为大写字符
    37     String sign = MD5Util.MD5Encode(sbkey.toString(), characterEncoding).toUpperCase();
    38     System.out.println("MD5加密值:"+sign);
    39     return sb.toString()+"sign="+sign;
    40     return sbkey;
    41 }
    
    
    
    //签名生成的通用步骤如下: 
    //第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 
    //特别注意以下重要规则: 
    //1.◆ 参数名ASCII码从小到大排序(字典序); 
    //2.◆ 如果参数的值为空不参与签名; 
    //3.◆ 参数名区分大小写; 
    //4.◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。 
    //5.◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段 
    //第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
    
    import org.apache.commons.codec.digest.DigestUtils;
    StringBuffer sb = new StringBuffer();
    StringBuffer sbkey = new StringBuffer();
    
    SortedMap<Object,Object> parameters = new TreeMap<Object,Object>();
           String merchant_id="190010002";
           String business_type="1005";
           String out_trade_no="1400000001";
           String key="3A4BC4A4000CF1B5FFA9E351E6C1539E";
           parameters.put("merchant_id", merchant_id);
           parameters.put("business_type", business_type);
           parameters.put("out_trade_no",out_trade_no);
           String characterEncoding = "UTF-8"; 
    
    Set es = parameters.entrySet();  //所有参与传参的参数按照accsii排序(升序)
    Iterator it = es.iterator();
    while(it.hasNext()) {
        Map.Entry entry = (Map.Entry)it.next();
         String k = (String)entry.getKey();
         Object v = entry.getValue();
         //空值不传递,不参与签名组串
         if(null != v && !"".equals(v)) {
             sb.append(k + "=" + v + "&");
              sbkey.append(k + "=" + v + "&");
            }
        }
    //System.out.println("字符串:"+sb.toString());
    sbkey=sbkey.append("key="+key);
    System.out.println("字符串:"+sbkey.toString());
    //MD5加密,结果转换为大写字符
    String sign = DigestUtils.md5Hex(sbkey.toString()).toUpperCase();
    log.info(sign);
    //String requestbody=sb.toString()+"sign="+sign;
    //log.info(requestbody);
    
    
    
     1 //HMAC_SHA加密方法
     2 //package com.taikang.hcloud.tlife.activity.cms.util;
     3 //
     4 //import javax.crypto.Mac;
     5 //import javax.crypto.spec.SecretKeySpec;
     6 //
     7 //
     8 //public class SignUtil {
     9 //
    10 //    private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    11 //
    12 //
    13 //    private static String byteToHexString(byte b) {
    14 //        int ret = b;
    15 //        if (ret < 0) {
    16 //            ret += 256;
    17 //        }
    18 //        int m = ret / 16;
    19 //        int n = ret % 16;
    20 //        return HEX_DIGITS[m] + "" + HEX_DIGITS[n] + "";
    21 //    }
    22 //
    23 //    private static String byteArrayToHexString(byte[] bytes) {
    24 //        StringBuilder stringBuilder = new StringBuilder();
    25 //        for (int i = 0; i < bytes.length; i++) {
    26 //            stringBuilder.append(byteToHexString(bytes[i]));
    27 //        }
    28 //        return stringBuilder.toString();
    29 //    }
    30 //
    31 //    public static String hMacSha1(String message, String secret) {
    32 //        String hash = "";
    33 //        try {
    34 //            Mac mac = Mac.getInstance("HmacSHA1");
    35 //            SecretKeySpec secretKeySpec = new SecretKeySpec(secret.getBytes(), "HmacSHA1");
    36 //            mac.init(secretKeySpec);
    37 //            byte[] bytes = mac.doFinal(message.getBytes());
    38 //            hash = byteArrayToHexString(bytes);
    39 //        } catch (Exception e) {
    40 //            e.printStackTrace();
    41 //        }
    42 //        return hash;
    43 //    }
    44 //}
    45 
    46 import HMAC_SHA_1.SignUtil;
    47 
    48 String noncestr ="qwer";
    49 String timestamp="20110210";
    50 String distance="0";
    51 //String content3 = noncestr+timestamp +distance;
    52 String content4 = "noncestr="+noncestr+"&timestamp="+timestamp +"&distance="+distance;//将入参进行拼接然后加密
    53 String signature = SignUtil.hMacSha1(content4, noncestr);
    54 //System.out.println(signature);
    55 log.info(signature);
    56 //vars.put("sign",signature);
    
    
    1 import org.apache.commons.codec.digest.DigestUtils;//import 包名.类名;引入jar包,使用的是jmeter/lib目录下自带的SHA-256加密包commons-codec-1.11.jar
    2 
    3 String a="{"id":"UD227","Type":"001","age":"20"}";//要进行加密的对象
    4 String a_SHE256=DigestUtils.sha256Hex(a.getBytes());
    5 //System.out.println(a_SHE256);
    6 log.info(a_SHE256);
    
    
    
     1 import org.apache.commons.codec.binary.Base64;//引入jmeter/lib目录下的commons-codec-1.11.jar
     2 String a="123456刚刚";
     3 byte[] a1=a.getBytes();//将字符串格式转换成数组格式
     4 String a_base64=Base64.encodeBase64String(a1);  //base64加密
     5 //String a_base64=Base64.encodeBase64String(a.getBytes());
     6 //tem.out.println(a_base64);
     7 log.info(a_base64);
     8 
     9 byte[] a3=Base64.decodeBase64(a_base64);//base64解密
    10 String a4=new String(a3);//将数组格式转换成字符串
    11 //System.out.println(a4);
    12 log.info(a4);
    
    
    
    import org.apache.commons.codec.digest.DigestUtils;
    //import 包名.类名;引入jar包,使用的是jmeter/lib目录下自带的MD5加密包commons-codec-1.11.jar
    String a1="{"id":"UD227","Type":"001","age":"20"}";//要进行加密的对象
    String id=args[0];//引入变量mobile,前置处理器和后置处理器中使用args[]
    String type=args[1];
    String age=${__Random(18,60,)};
    //String id=bsh.args[0];//引入变量mobile,beanshell取样器中bsh.args[]
    String a=a1.replaceAll("UD227", id).replaceAll("20", age).replaceAll("001", type);//参数替换
    String md5=DigestUtils.md5Hex(a);//类名.方法名,调用加密方法
    log.info(md5);
    log.info(a);
    log.info(age+","+type);
    vars.put("md5",md5);//将变量md5的值赋值给jmeter的变量md5
            
    String md5_upper=md5.toUpperCase();//将变量md5的值全部变成大写字母
    log.info(md5_upper);    
    
    String md5_lower=md5.toLowerCase();//将变量md5的值全部变成小写字母
    log.info(md5_lower);
    import org.apache.commons.codec.digest.DigestUtils;
    //import 包名.类名;引入jar包,使用的是jmeter/lib目录下自带的MD5加密包commons-codec-1.11.jar
    
    String mobile=args[0];//引入变量mobile,前置处理器和后置处理器中使用args[]
    String number=args[1];
    String md5=DigestUtils.md5Hex(mobile+number);//类名.方法名,调用加密方法
    log.info(md5);
    //vars.put("md5",md5);//将变量md5的值赋值给jmeter的变量md5
    
  • 相关阅读:
    linux系统中将一列数据转换为若干列数据(列的顺序不变)
    linux系统中将矩形数据转换为一行、一列的形式
    linux系统中实现文本转置。
    linux shell 如何将多列数据变为一行数据
    linux系统中如何将一行数据变为一列
    bash: unlzma: command not found...
    linux系统中实现对行的批量替换
    linux系统中对指定行的字符串进行替换
    linux系统中对指定列的数据中的字符串进行替换
    linux系统中如何将每行特定数目字符后的字符替换为指定字符
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/14059399.html
Copyright © 2020-2023  润新知