对json字符串进行md5加密工具类
- 2022-04-24 10:13:00
- admin 原创
- 2283
对json字符串进行md5加密工具类
首先对json字符串进行排序,然后进行md5加密,用于比较加密之后的字符串是否先等
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import javax.xml.bind.DatatypeConverter; import java.security.MessageDigest; import java.util.Arrays; import java.util.List; import java.util.TreeMap; public class Test { public static void main(String[] args) { String req = "{\n" + "\"requestTime\" :\"20190101120001\",\n" + "\"requestValue\" :\"1000\",\n" + "\"requestValue1\" :\"1000\",\n" + "\"requestKey\" :\"key\"\n" + "}"; String req2 = "{\n" + "\"requestTime\" :\"20190101120002\",\n" + "\"requestValue\" :\"1000\",\n" + "\"requestValue1\" :\"1000\",\n" + "\"requestKey\" :\"key\"\n" + "}"; //全参数比对,所以两个参数MD5不同 String dedupMD5 =dedupParamMD5(req); String dedupMD52 =dedupParamMD5(req2); System.out.println("req1MD5 = "+ dedupMD5+" , req2MD5="+dedupMD52); //去除时间参数比对,MD5相同 String dedupMD53 = dedupParamMD5(req,new String[]{"requestTime","requestValue1"}); String dedupMD54 = dedupParamMD5(req2,new String[]{"requestTime","requestValue1"}); System.out.println("req1MD5 = "+ dedupMD53+" , req2MD5="+dedupMD54); } /** * 对json字符串进行加密,然后过滤掉制定的参数 * @param reqJSON * @param excludeKeys * @return */ public static String dedupParamMD5(final String reqJSON, String... excludeKeys) { //先对json字符串进行排序,然后过滤掉制定后面的key JSONObject arg = JSONObject.parseObject(reqJSON); String decreptParam= JSON.toJSONString(arg, SerializerFeature.MapSortField); TreeMap paramTreeMap = JSON.parseObject(decreptParam, TreeMap.class); if (excludeKeys!=null) { List<String> dedupExcludeKeys = Arrays.asList(excludeKeys); if (!dedupExcludeKeys.isEmpty()) { for (String dedupExcludeKey : dedupExcludeKeys) { paramTreeMap.remove(dedupExcludeKey); } } } String paramTreeMapJSON = JSON.toJSONString(paramTreeMap); String md5deDupParam = jdkMD5(paramTreeMapJSON); return md5deDupParam; } /** * 进行md5加密 * @param src * @return */ private static String jdkMD5(String src) { String res = null; try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); byte[] mdBytes = messageDigest.digest(src.getBytes()); res = DatatypeConverter.printHexBinary(mdBytes); } catch (Exception e) { } return res; } }
发表评论
文章分类
联系方式
联系人: | 郑州-小万 |
---|---|
电话: | 13803993919 |
Email: | 1027060531@qq.com |
QQ: | 1027060531 |
网址: | www.wanhejia.com |
Update Required
To play the media you will need to either update your browser to a recent version or update your Flash plugin.