这几天研究了下数字签名相关的功能,简单分享下实现的思路。因签名及验证已封装成插件,故本文不对具体的签名功能及验签功能进行讲解,只分享如何集成到实际项目中。
需求
在表单提交的时候进行签名,查看时可以对该单据数据进行签名校验。
目的
防止数据被后台私自篡改,有理有据。
设计思路
- 表单编辑页面,点击提交时,自行组装需要进行签名验证的数据,拼接成json字符串原文;
- 调用签名插件进行签名,并获取签名后的密文信息;
- 调用后台方法,保存原文、密文、以及当前表单的唯一标识ID;
- 表单查看页面,点击验签,获取当前页面对应的需要进行签名验证的数据,拼接成json字符串原文(格式保证和步骤1拼接的原文一致);
- 根据表单唯一标识ID查询对应数据库存储的密文;
- 最后调用签名插件的验证方法进行数据验证(传参为步骤4获取的原文+步骤5查询的密文),验证成功则说明数据未被篡改。
表设计
-- Create table
create table SIGN_INFOMATION
(
id VARCHAR2(32) not null