组件
概述
该加密解密组件提供前沿风雷软件的加密解密方法,实现文件流的加密和解密功能。
适用范围
Pangea v2.8.6+
快速集成
1、在业务模块的pom
文件中添加依赖
检查所在项目的pom.xml
中是否添加了pangae-common-encryption
依赖,如果存在依赖则跳过此步骤,否者需要添加依赖,代码如下:
xml
<dependency>
<groupId>com.hisense.pangea</groupId>
<artifactId>pangea-common-encryption</artifactId>
</dependency>
2、配置参数
在项目所在的yml
配置文件中配置以下参数
yaml
pangea:
application:
# 后端服务名称
name: pangea-demo
drm:
gateway:
# API网关获取接口的地址
app-server: xxxx
# API网关获取接口的id
app-id: xxx
# API网关获取接口的key
app-key: xxxxxxxxx
# 需要供应商加密解密的方法可配置下方参数,不需要无需配置
rescource-app-server: xxxxxxxxx
rescource-app-id: xxx
rescource-app-key: xxx
#加密策略文件存储实际路径
policy-path: /usr/local/drm
#策略刷新间隔时间,单位分钟,0为不刷新,第一次连服务器时下载一次
refresh-interval: 0
注意
- 如果使用盘古,可以在基础数据中的参数配置列表进行,无需在yml文件中配置。
- 如果没有以上的API网关信息,需走相应的申请流程。
- 如果使用供应商加密解密方法,可在API市场订阅保密U盾下载获得相关参数。
3、相关方法
方法名称 | 方法格式 | 方法参数 | 返回值 | 备注 |
---|---|---|---|---|
解密 | decryptStream(InputStream inputStream) | inputStream:输入流 | InputStream | |
加密 | encryptStream(OutputStream outputStream, String ownerId, int secretLevelId,boolean isEncrypted) | OutputStream:输入流 ownerId:加密后的密文作者 secretLevelId:加密后的密级id ,1是只读文档,2是办公文档,5是自动加密文档isEncrypted:是否是加密,true是/false否 | OutputStream | |
判断是否为加密文件 | isEncrypted(String filePath) | filePath:文件路径 | boolean | |
判断是否为加密文件 | isEncrypted(InputStream inputStream) | inputStream:输入流 | boolean | |
本地文件方式加密供应商文件 | encryptSupplierFile(File srcFile, String[] supplierId, int permission, Date startTime, Date endTime, boolean supportScreenWaterMark, boolean supportPrintWaterMark, int openLimit) | srcFile:文件路径,supplierId:通过供应商接口查询返回供应商ID, permission:授权权限,供应商用户使用, startTime:授权开始时间, endTime:授权截止时间, supportPrintWaterMark:支持打印水印, supportScreenWaterMark:支持屏幕水印, openLimit:0 不限制,最大255 | 无 | |
流加密供应商文件 | encryptSupplierStream(OutputStream outputStream, String ownerId, int secretLevelId, String[] supplierId, int permission, Date startTime, Date endTime, int openLimit) | outputStream:输出流,ownerId:明文制作使用,secretLevelId:密级,内部用户使用,supplierId:通过供应商接口查询返回供应商ID,permission:授权权限,供应商用户使用,startTime:授权开始时间,endTime:授权截止时间,openLimit:0 不限制,最大255 | OutputStream |
4、使用示例demo
所提供的方法均为静态方法,可直接使用,下方为使用示例。
java
(1)、解密使用demo
@GetMapping("demo")
public InputStream Demo(InputStream inputStream) {
inputStream = EncryptionService.decryptStream(inputStream);
return inputStream;
}
Java
(2)、加密使用demo
@GetMapping("demo")
public OutputStream Demo(OutputStream outputStream) {
outputStream = EncryptionService.encryptStream(outputStream,ownerId,secretLevelId,isEncrypted);
return outputStream;
}