Skip to content
On this page

数据脱敏

数据脱敏支持数据上链新增及修改

上链数据实体示例代码

import cn.opendatachain.common.annotation.Desensitization;
import cn.opendatachain.common.util.DesensitizationUtils;
import lombok.Data;

/** 
* TestData 测试数据 
*
* @author 郭志斌 
* @version nmdc-contract 1.0.0.RELEASE 
* <b>Creation Time:</b> 2022/8/24 15:04 
*/

@Data
public class Dataset {
    
    /**
     * 数据集标识 CSTR,注意标识不要进行脱敏处理
     */
    private String cstr;

    /**
    * 中文姓名     
    */
    @Desensitization(type = DesensitizationUtils.DataType.CHINESE_NAME)    
    private String name;   

    /**     
    * 移动电话     
    */   
    @Desensitization(type = DesensitizationUtils.DataType.MOBILE_PHONE)    
    private String mobile;
}

// 创建数据脱敏对象并在属性上增加注解 @Desensitization

目前支持脱敏的数据类型包括,可自定义扩展:

  • [x] 用户ID
  • [x] 用户名,中文/英文
  • [x] 身份证号
  • [x] 固定电话号码
  • [x] 移动电话号码
  • [x] 地址
  • [x] 电子邮件
  • [x] 密码
  • [x] 车牌号

合约示例代码

/**
 * 数据上链
 *
 * @param dataset 数据上链对象
 * @return Mono<ODCResponse>
 */
@Operation(summary = "数据上链")
@PostMapping("/test.upsert")
public Mono<ODCResponse> upsert(@RequestBody Dataset dataset) throws IllegalAccessException {
    //获取交易对象
    Transaction transaction = context.getTransaction();

    //转换为 json 数据格式
    String json = jsonUtils.toJson(dataset);
    log.debug("脱敏前数据 json :{}", json);

    // 数据脱敏处理
    Dataset desensitizingDataset = transaction.desensitizing(dataset);

    //转换为 json 数据格式
    String desensitizingJson = jsonUtils.toJson(desensitizingDataset);
    log.debug("脱敏后数据 json :{}", desensitizingJson);

    //注意上链时使用脱敏后的数据
    ContractPayload payload = transaction.payloadBuilder(dataset.getCstr(), desensitizingJson);

    log.debug("ContractPayload : {}", jsonUtils.toJson(payload));

    // 数据上链
    return transaction.upsert(payload);
}

版权所有@2019-2022 中国科学院计算机网络信息中心 京ICP备 09112257号-115