Skip to content

组件

概述

该加密解密组件提供前沿风雷软件的加密解密方法,实现文件流的加密和解密功能。

适用范围

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

注意

  1. 如果使用盘古,可以在基础数据中的参数配置列表进行,无需在yml文件中配置。
  2. 如果没有以上的API网关信息,需走相应的申请流程。
  3. 如果使用供应商加密解密方法,可在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 不限制,最大255OutputStream

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