# 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;
}
```