# signDemo **Repository Path**: mmsAdmin/sign-demo ## Basic Information - **Project Name**: signDemo - **Description**: 对外接口加签/验签 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-04-23 - **Last Updated**: 2025-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用必读 > 本工程中的 `SignPlusUtils.java` 是核心文件 > 1. 使用:复制`SignPlusUtils.java`到自己工程中 2. 新建:`IgnoreSign.java` 自定义注解,此类主要是可以在实体类加注解,设置忽略加签的属性,达到过滤的作用 3. 本工具类高度依赖 `hutool` 工具包,添加下面依赖; ```xml cn.hutool hutool-all 5.8.26 ``` * 第一步:向接口提供方,获取秘钥 `application.yml` 增加 ```yml sign: public-key: '' private-key: '' ``` * 第二步: 复制`SignProperties.java` 到项目中 * 第三步: 远程请求API接口,具体看 `TestController.java` ```java @Autowired private SignProperties signProperties; @GetMapping("test") public Object httpRequsetTset(){ String appId = "000000001"; String apiUrl = "http://192.168.31.114:9200/property/api/v1/getMemberInfo"; String publicKey = signProperties.getPublicKey(); //参数签名测试例子 MemberEntity member=new MemberEntity(); member.setId(IdUtil.objectId()); member.setName("西决"); member.setAge(99); member.setOuther("这个属性将被忽略加签!"); member.setTimestamp(String.valueOf(System.currentTimeMillis())); // 对称加密,加签 String signStr = SignPlusUtils.signRsa(publicKey,SignPlusUtils.getAllParams(member), null); //System.out.println("sign:"+signStr); // 把签名结果放入请求参数中 member.setSign(signStr); //请求 HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头 headers.put("appid", appId); //发送get请求并接收响应数据 //String result = HttpUtil.createGet(apiUrl).addHeaders(headers).form(data).execute().body(); //发送post请求并接收响应数据 Map convert = Convert.convert(Map.class, member); String result = HttpUtil.createGet(apiUrl).addHeaders(headers).form(convert).execute().body(); System.out.println(result); RequestEntity entity = Convert.convert(RequestEntity.class, JSONUtil.parse(result)); return entity; } ```