# carbon-integration
**Repository Path**: wisefin/carbon-integration
## Basic Information
- **Project Name**: carbon-integration
- **Description**: 用于和智保云互联互通平台进行数据集成
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: main
- **Homepage**: https://zhibaocloud.com
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2023-03-31
- **Last Updated**: 2024-07-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 智保云数据平台 SDK
[](https://github.com/zhibaocloud/carbon-integration/actions/workflows/ci.yaml)
[](https://codecov.io/gh/zhibaocloud/carbon-integration)
[](https://maven-badges.herokuapp.com/maven-central/com.zhibaocloud/carbon-integration)
## 数据平台项目是什么
该项目是 [智保云](https://zhibaocloud.com)
为满足 [保险中介机构信息化工作监管办法](http://www.gov.cn/zhengce/zhengceku/2021-01/13/content_5579627.htm)
中要求的 `通过技术手段实现与合作保险公司的系统互通、业务互联、数据对接` 而开发的 SaaS 化对接系统。
通过 SDK 的方式将业务逻辑、加解密方式进行封装,减少线上联调、以及减少文档工作。
项目代号: `Carbon`, 在一些 Java 内部实现类有 `Carbon` 前缀,用于区分其他通用类型。
## 如何启动
```bash
# 编译并安装到本地仓库
mvn clean install
# 启动后端 Demo 服务用于接收推送数据
# 当收到推送数据后会在控制台打印显示
mvn spring-boot:run -pl carbon-server-demo
# 启动 Client 项目向 Mock 服务发送数据
mvn spring-boot:run -pl carbon-client-demo
```
## 如何使用
### 数据推送方
使用 `carbon-client-sdk` 项目中的 `CarbonClient` 类进行数据推送。
```xml
com.zhibaocloud
carbon-client-sdk
1.4.0
com.zhibaocloud
carbon-serialization-jackson
1.4.0
com.zhibaocloud
carbon-serialization-gson
1.4.0
com.zhibaocloud
carbon-serialization-fastjson2
1.4.0
```
如推送方使用的是 spring-boot构建,可以引入 `carbon-client-spring-boot-starter` 简化配置。
在 Starter 启动的时候会扫描,使用兼容的 JSON library 作为序列化工具。
```xml
com.zhibaocloud
carbon-client-spring-boot-starter
1.4.0
com.fasterxml.jackson.core
jackson-databind
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
com.google.code.gson
gson
com.alibaba.fastjson2
fastjson2
```
示例项目参考 `carbon-client-demo`。是一个命令行程序,随机创建数据并进行推送
### 数据接收方
使用 `carbon-server-sdk` 项目中的 `MessageListener` 监听数据。如接收方使用的是 spring-boot
构建,可以引入 `carbon-server-spring-boot-starter` 简化配置。
```xml
com.zhibaocloud
carbon-server-sdk
1.4.0
com.zhibaocloud
carbon-server-spring-boot-starter
1.4.0
```
### 数据格式
数据交换格式定义在 `carbon-exchange` 项目中,该模块主要实现:
* 通过 Java POJO 的方式定义了两个系统之间的数据交换格式,并通过枚举方式定义取值范围
* 约定数据在网络中传输时的序列化、反序列化的方式 (当前使用 Jackson)
* 约定数据加解密的方式 (如: AES, SM4)
## FAQ
1. 我已经使用了https为什么还需要对报文进行加密
> * 防止中间人攻击,或DNS劫持等情况
> * 为了兼容老旧系统。如CA根证书未更新导致旧版JDK无法识别https中的证书。那么可以使用应用层加密与HTTP协议的方式来保证数据的安全性
2. 在交互过程中各种加密方法都是用来做什么的
> * 对称加密: 用于加密报文中的数据,保证数据的机密性、不被外部窃听。看到的数据为密文
> * 信息摘要:
用于保证数据的完整性,防止数据被篡改或损坏。(一般对称加密是按block加密,丢掉几个block仍然可以解密只是内容会不正确。而信息摘要是对整个数据进行摘要,可以发现这种篡改)
> * 非对称加密:
用于保证数据的真实性、防止数据被伪造。(在非对称加密中:私钥加密只能公钥解密,公钥加密只能私钥解密。因此只要私钥未被泄漏,接收方如果能通过公钥解密数据就可以确认是私钥持有者发送的)
3. 支持的加密算法 (如使用国密,需要额外引入BC包)
> * 对称加密: AES, SM4
> * 信息摘要: SHA-256, SHA-512, SHA3-256, SHA3-512, MD5, SM3
> * (暂未实现)非对称加密: RSA, SM2
4. 是否支持 Jakarta EE
> 当前项目中未引入任何 javax 包,理论上是可以在 Jakarta 环境中运行
5. 是否支持非 Java 语言,如 PHP
> 暂无此计划。但是可以参考 `carbon-exchange` 项目中的数据格式定义,自行实现