当前位置: 首页 > news >正文

无锡网站建设 首选众诺/百度极速版app下载安装挣钱

无锡网站建设 首选众诺,百度极速版app下载安装挣钱,公司网站优化方案,怎样做天猫 淘宝网站导购Java对方法参数进行签名加密参数签名步骤MD5加密算法Signature签名工具类代码示例执行测试参数签名步骤 1.将请求参数中除 sign 外的多个键值对,按一定规则排序,拼成一个字符串2.将 signKey 拼接在 第一步 中排序后的字符串前/后面得到待签名字符串3.使…

Java对方法参数进行签名加密

  • 参数签名步骤
  • MD5加密算法
  • Signature签名工具类
  • 代码示例
  • 执行测试

参数签名步骤

1.将请求参数中除 sign 外的多个键值对,按一定规则排序,拼成一个字符串2.将 signKey 拼接在 第一步 中排序后的字符串前/后面得到待签名字符串3.使用算法加密待加密字符串,得到sign4.将 sign 添加到请求参数中

MD5加密算法

public final class MD5 {public static String encrypt(String strSrc) {try {char[] hexChars = {'0', '1', '2', '3', '4', '5', '6', '7', '8','9', 'a', 'b', 'c', 'd', 'e', 'f'};byte[] bytes = strSrc.getBytes();MessageDigest md = MessageDigest.getInstance("MD5");md.update(bytes);bytes = md.digest();int j = bytes.length;char[] chars = new char[j * 2];int k = 0;for (byte b : bytes) {chars[k++] = hexChars[b >>> 4 & 0xf];chars[k++] = hexChars[b & 0xf];}return new String(chars);} catch (NoSuchAlgorithmException e) {e.printStackTrace();throw new RuntimeException("MD5加密出错: " + e);}}public static String encrypt2(String strSrc) {try {MessageDigest digest = MessageDigest.getInstance("md5");byte[] result = digest.digest(strSrc.getBytes());StringBuffer buffer = new StringBuffer();for (byte b : result) {int number = b & 0xff;String str = Integer.toHexString(number);if (str.length() == 1) {buffer.append("0");}buffer.append(str);}return buffer.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();throw new RuntimeException("MD5加密出错: " + e);}}
}

Signature签名工具类

@Slf4j
public class Signature {/*** 请求参数转Map** @param paramMap* @return*/public static Map<String, Object> switchMap(Map<String, String[]> paramMap) {Map<String, Object> resultMap = new HashMap<>();for (Map.Entry<String, String[]> param : paramMap.entrySet()) {resultMap.put(param.getKey(), param.getValue()[0]);}return resultMap;}/*** 请求数据获取签名** @param paramMap 请求参数* @param signKey  签名Key* @return*/public static String getSign(Map<String, Object> paramMap, String signKey) {paramMap.remove("sign");TreeMap<String, Object> sorted = new TreeMap<>(paramMap);StringBuilder str = new StringBuilder();for (Map.Entry<String, Object> param : sorted.entrySet()) {str.append(param.getValue()).append("|");}str.append(signKey);log.info("加密前:" + str.toString());String md5Str = MD5.encrypt(str.toString());log.info("加密后:" + md5Str);return md5Str;}/*** 签名校验** @param paramMap 请求参数* @param signKey  签名Key* @return*/public static boolean isSignEquals(Map<String, Object> paramMap, String signKey) {String sign = (String) paramMap.get("sign");String md5Str = getSign(paramMap, signKey);return sign.equals(md5Str);}/*** 获取时间戳** @return*/public static long getTimestamp() {return System.currentTimeMillis();}
}

代码示例

@RestController
public class TestController {private static final String SIGNKEY = "HelloWorld";/*** 使用加密算法加密字符串得到sign** @return*/@GetMapping("/getSign")public String getSign() {Map<String, Object> paramMap = new HashMap<>();paramMap.put("userName", "小白");paramMap.put("age", "20");return Signature.getSign(paramMap, SIGNKEY);}/*** 参数携带sign请求进行参数验证** @param request* @return*/@GetMapping("/verifySignature")public Object verifySignature(HttpServletRequest request) {// 参数转换成MapMap<String, Object> paramMap = Signature.switchMap(request.getParameterMap());// 进行参数签名验证if (!Signature.isSignEquals(paramMap, SIGNKEY)) {throw new RuntimeException("签名校验失败....");}return "success";}
}

执行测试

请求 http://localhost:8888/getSign生成Sign

c8dfaf36ad2a96d89e53c7e745d4db7f

请求http://localhost:8888/test?userName=小白&age=20&sign=c8dfaf36ad2a96d89e53c7e745d4db7f进行方法参数校验

success
http://www.jmfq.cn/news/5179699.html

相关文章:

  • 网站建设哪里比较好/免费网页制作网站
  • 推荐完善政府网站建设/深圳全网推广
  • 开源展示型网站/优化课程设置
  • php个人网站源码带音乐/网站设计师
  • 家居企业网站建设流程/品牌运营具体做什么
  • 网站建设框架/代写文章价格表
  • 怎样做购物网站/域名查询服务器
  • 怎样找到黄页网站/b站推广怎么买
  • 如何利用某个软件做一个网站/网络营销主要是学什么的
  • 代还信用卡网站建设/公关
  • 机床回收网站建设/今日十大热点新闻
  • php做网站难么/搜索网站大全
  • 网站建设安排/免费优化
  • 做外贸女装有哪些网站有哪些/关联词有哪些三年级
  • 那个网站做效果图电脑配置/网站搜索排名优化价格
  • 福州网络营销推广申请/百度推广怎么优化
  • 免费申请logo/百度seo网站优化 网络服务
  • 益阳网站开发公司/seo外链建设的方法
  • 阿里云域名如何做网站/关键词在线听免费
  • 做花语的网站/今日新闻热点10条
  • 网站空间下载/aso优化师
  • 庄河网站建设公司/安徽网站关键字优化
  • 英文网站制作注意点/优化软件刷排名seo
  • 长沙做网站排名/外贸网站平台有哪些
  • iis网站服务器安全隐患分析/网站服务器一年的费用
  • 建网站哪家好案例/hao123上网从这里开始官方
  • 标准网站建设哪家便宜/百度推广优化公司
  • 信阳市住房和城乡建设厅网站/推广赚佣金的软件排名
  • 建设专业网站价格/网店运营入门基础知识
  • 西安专题门户响应式网站建设/广告电话