2.9 KiB
2.9 KiB
贷款定价敏感字段加密后端实施记录
修改内容
- 在
ruoyi-loan-pricing新增SensitiveFieldCryptoService,统一处理custName、idNum的 AES/ECB/PKCS5Padding + Base64 加解密。 - 在
ruoyi-loan-pricing新增LoanPricingSensitiveDisplayService,统一处理个人姓名、企业名称、身份证号、统一社会信用代码的脱敏展示。 - 在
LoanPricingWorkflowServiceImpl的创建链路对custName、idNum加密后入库,并在列表、详情链路解密后做脱敏返回。 - 在
LoanPricingModelService调用模型前显式解密custName、idNum,保证模型入参不接收密文;同时补齐ModelInvokeDTO.idNum字段。 - 修复模型调用后更新
modelOutputId时把解密后的custName、idNum明文回写数据库的问题,改为仅更新modelOutputId。 - 在
LoanPricingWorkflowMapper.xml和服务查询条件中移除按custName查询,改为按custIsn查询。 - 新增
sql/clear_loan_pricing_workflow_history.sql,用于清理贷款定价流程及模型输出历史数据。
新增测试
SensitiveFieldCryptoServiceTestLoanPricingSensitiveDisplayServiceTestLoanPricingWorkflowServiceImplTestLoanPricingModelServiceTest
验证结果
- 执行
mvn -pl ruoyi-loan-pricing -am -Dtest=SensitiveFieldCryptoServiceTest,LoanPricingSensitiveDisplayServiceTest -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 执行
mvn -pl ruoyi-loan-pricing -am -Dtest=LoanPricingWorkflowServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 执行
mvn -pl ruoyi-loan-pricing -am -Dtest=LoanPricingWorkflowServiceImplTest,LoanPricingModelServiceTest -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 执行
mvn -pl ruoyi-loan-pricing -am -Dsurefire.failIfNoSpecifiedTests=false test,结果通过。 - 手工启动
ruoyi-admin到18080端口,并将model.url指向http://localhost:18080/rate/pricing/mock/invokeModel后完成联调: - 个人流程
PSEC2026033004与企业流程CSEC2026033003创建成功,接口即时返回的custName、idNum为密文。 - 通过 MySQL 查询
loan_pricing_workflow,确认cust_name、id_num落库为密文,同时model_output_id正常回填。 - 调用列表接口
/loanPricing/workflow/list?custIsn=PSEC2026033004,确认返回custName为张*。 - 调用详情接口
/loanPricing/workflow/20260330110314523,确认个人custName为张*、idNum为1101********1234。 - 调用详情接口
/loanPricing/workflow/20260330110252133,确认企业custName为测试****公司、idNum为91*************00X。
备注
- 联调过程中发现
serialNum仍使用毫秒时间戳生成,并发创建可能触发uk_serial_num冲突;该问题为本次验证中暴露的既有风险,本次未纳入敏感字段加密方案范围内处理。