/*** * 方法用途: 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序),并且生成url参数串
* 实现步骤:
* * @param paraMap 要排序的Map对象* @param urlEncode 是否需要URLENCODE* @param keyToLower 是否需要将Key转换为全小写* true:key转化成小写,false:不转化* @return*/ public static String formatUrlMap(Map paraMap, boolean urlEncode, boolean keyToLower) { String buff = ""; Map tmpMap = paraMap; try { List> infoIds = new ArrayList>(tmpMap.entrySet()); // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) Collections.sort(infoIds, new Comparator>() { @Override public int compare(Map.Entry o1, Map.Entry o2) { return (o1.getKey()).toString().compareTo(o2.getKey()); } }); // 构造URL 键值对的格式 StringBuilder buf = new StringBuilder(); for (Map.Entry item : infoIds) { if (StringUtils.isNotBlank(item.getKey())) { String key = item.getKey(); String val = (String) item.getValue(); if (urlEncode) { val = URLEncoder.encode(val, "utf-8"); } if (keyToLower) { buf.append(key.toLowerCase() + "=" + val); } else { buf.append(key + "=" + val); } buf.append("&"); } } buff = buf.toString(); if (buff.isEmpty() == false) { buff = buff.substring(0, buff.length() - 1); } } catch (Exception e) { return null; } return buff; }
/****方法用途: 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序),并且生成url参数串 末尾*/public static String unionpayASCII(Map map){Object[] keys = map.keySet().toArray();Arrays.sort(keys);StringBuilder originStr = new StringBuilder();for(Object key:keys){if(null!=map.get(key)&&!map.get(key).toString().equals("")&&!"signature".equals(key))originStr.append(key).append("=").append(map.get(key)).append("&");}return originStr.toString();}
* sha256算法 转成16进制字符串* @param str* @return*/public static String getSHA256StrJava(String str){MessageDigest messageDigest;String encodeStr = "";try {messageDigest = MessageDigest.getInstance("SHA-256");messageDigest.update(str.getBytes("UTF-8"));encodeStr = byte2Hex(messageDigest.digest());} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return encodeStr;}
/*** 将byte转为16进制* @param bytes* @return*/private static String byte2Hex(byte[] bytes){StringBuffer stringBuffer = new StringBuffer();String temp = null;for (int i=0;i
/*** 进行base64编码* @param inputData* @return*/public static String encodeData(String inputData) {try {if (null == inputData) {return null;}return new String(Base64.encodeBase64(inputData.getBytes("utf-8")), "utf-8");} catch (UnsupportedEncodingException e) {}return null;}
/*** 将字符串sha256算法 byte[]* @param str* @return*/public static byte[] getSHA256byte(String str){MessageDigest messageDigest;String encodeStr = "";byte[] strbyte =null;//byte[] str =null;try {messageDigest = MessageDigest.getInstance("SHA-256");messageDigest.update(str.getBytes("UTF-8"));strbyte = messageDigest.digest();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return strbyte;}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!