一、业务背景

在很多项目做密评的过程中,要求乐创者支持第三方的加解密服务,并提供对敏感数据的机密性、完整性等控制。
从v8.0.0版本开始,乐创者通过扩充了一套加解密标准接口,开放对接外部的加解密服务的能力。并实现了系统内部对系统配置(对接的redis、mongodb等服务配置信息)、用户表(dn_user)、用户对角色(dn_map_user_role)、审计日志数据表等相关字段的机密性、完整性控制。

本文档重点介绍如何通过二次开发的方式扩展第三方加解密服务。

二、接口定义

准备工作

从项目依赖lczServer/WEB-INF/lib/hr-toolkit-8.x.x.jar

扩展类实现

扩展类需实现LczCipher接口,接口定义如下:

package com.datanew.cipher;

/**
* 加解密类型枚举定义
*/
public enum CipherType {
    /**
     * 数据摘要
     */
    DATA_HASH,
    /**
     * 对称加密
     */
    SYM_ENCRYPT,
    /**
     * 非对称加密
     */
    ASYM_ENCRYPT,
    /**
     * 签名验签
     */
    SIGN,
}

/**
* 加解密接口定义
*/
public interface LczCipher {
    /**
     * 加解密函数初始化方法
     * @param params
     */
    void init(String params);

    /**
     * 文本加密方法(在此方法中实现第三方的文本内容加密代码)
     * @param data
     * @param type
     * @param param
     * @return
     */
    String encipher(String data, CipherType type, ExtraParam param) throws Exception;

    /**
     * 文本解密方法(在此方法中实现第三方的文本内容解密代码)
     * @param data
     * @param type
     * @param param
     * @return
     */
    String decipher(String data, CipherType type, ExtraParam param) throws Exception;

    /**
     * 二进制加密方法(在此方法中实现第三方的二进制数据加密代码)
     * @param data
     * @param type
     * @param param
     * @return
     */
    byte[] encipher(byte[] data, CipherType type, ExtraParam param) throws Exception;

    /**
     * 二进制解密方法(在此方法中实现第三方的二进制数据解密代码)
     * @param data
     * @param type
     * @param param
     * @return
     */
    byte[] decipher(byte[] data, CipherType type, ExtraParam param) throws Exception;

    /**
     * 数据签名(在此方法中实现第三方的数据签名代码)
     * @param data
     * @param param
     * @return
     * @throws Exception
     */
    String sign(String data, ExtraParam param) throws Exception;

    /**
     * 数据验签(在此方法中实现第三方的数据验签代码)
     * @param data
     * @param sign
     * @param param
     * @return
     * @throws Exception
     */
    boolean verifySign(String data, String sign, ExtraParam param) throws Exception;
}

public class ExtraParam {
    /**
     * 当前操作租户
     */
    private String tenantId;
    /**
     * 默认秘钥种子
     */
    private String seed;
    /**
     * 当前操作人ID
     */
    private String userId;
    /**
     * 当前操作人账号
     */
    private String userName;
    /**
     * 默认公钥
     */
    private String publicKey;
    /**
     * 默认私钥
     */
    private String privateKey;
    /**
     * 业务的额外参数
     */
    private Map<String, String> otherMap;
}

三、应用配置

平台管理员(sa)登录智能门户,在服务配置->加解密服务配置中维护加、解密服务类的管理列表页面,添加对应的加解密服务扩展类:

添加完成后,在服务配置->系统安全->安全登记配置中,选择需要的加、解密服务:

保存成功后,需点击“数据完整性和机密性”按钮,触发对系统数据进行全面的完整性和机密性梳理。

注意:对于业务表中的敏感数据,需用户自行通过数据开发平台进行数据的机密性、完整性处理。

四、使用场景

系统平台核心数据

系统在对核心数据进行加解密时,会调用当前配置的加解密服务对应的加密/解密方法对数据进行预处理。

面向设计人员的加/解密函数

报表/跨设备表单/大屏/数据开发平台等产品中,设计人员可通过平台提供的加密函数(standardencrypt)、解密(standarddecrypt)函数对数据进行加/解密处理。

五、示例代码

class demo {


}
作者:柳杨  创建时间:2026-02-03 14:00
最后编辑:柳杨  更新时间:2026-02-03 15:22