对请求的参数进行字典排序
字典排序的就A-Z降序排序
可以用hutool 完成排序
import cn.hutool.core.map.MapUtil;
Map<String, Collection<String>> sortQueries = MapUtil.sort(queries);
降序拼接
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("aa", "1");
map.put("zz", "4");
map.put("dd", "6");
map.put("de", "1");
String a = MapUtil.sortJoin(map, "&", "=", false);
System.out.println(a);
}
aa=1&dd=6&de=1&zz=4
斜体样式加密是经常需要遇到的,所以总结一些
One–工具
. org.apache.commons.codec.digest.DigestUtils
今后加密就不用到处去找了 md5加密可以返回16 可以返回32
- md5Hex:MD5加密,返回32位字符串
- sha1Hex:SHA-1加密
- sha256Hex:SHA-256加密
- sha512Hex:SHA-512加密
- md5:MD5加密,返回16位字符串
public class Md5Util {
/**
* 对字符串md5加密
*
* @param str
* @return
* @throws Exception
*/
public static String getMD5Str(String str) {
try {
// 生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
// 计算md5函数
md.update(str.getBytes());
// digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
return new BigInteger(1, md.digest()).toString(16);
} catch (Exception e) {
throw new CustomException("MD5加密出现错误,"+e.toString());
}
}
/**
* 32位MD5加密方法
* 16位小写加密只需getMd5Value("xxx").substring(8, 24);即可
*
* @param sSecret
* @return
*/
public static String getMd5Value(String sSecret) {
try {
MessageDigest bmd5 = MessageDigest.getInstance("MD5");
bmd5.update(sSecret.getBytes());
int i;
StringBuffer buf = new StringBuffer();
byte[] b = bmd5.digest();// 加密
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0){
i += 256;
}
if (i < 16){
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
return buf.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
}
UUID
public static String getUUID(){
return UUID.randomUUID().toString().replace("-", "");
}