数字签名及验证功能实现思路

这几天研究了下数字签名相关的功能,简单分享下实现的思路。因签名及验证已封装成插件,故本文不对具体的签名功能及验签功能进行讲解,只分享如何集成到实际项目中。

需求

在表单提交的时候进行签名,查看时可以对该单据数据进行签名校验。

目的

防止数据被后台私自篡改,有理有据。

设计思路

  1. 表单编辑页面,点击提交时,自行组装需要进行签名验证的数据,拼接成json字符串原文;
  2. 调用签名插件进行签名,并获取签名后的密文信息;
  3. 调用后台方法,保存原文、密文、以及当前表单的唯一标识ID;
  4. 表单查看页面,点击验签,获取当前页面对应的需要进行签名验证的数据,拼接成json字符串原文(格式保证和步骤1拼接的原文一致);
  5. 根据表单唯一标识ID查询对应数据库存储的密文;
  6. 最后调用签名插件的验证方法进行数据验证(传参为步骤4获取的原文+步骤5查询的密文),验证成功则说明数据未被篡改。

表设计

-- Create table
create table SIGN_INFOMATION
(
  id          VARCHAR2(32) not null,
  business_id VARCHAR2(32),
  user_name   VARCHAR2(50),
  user_id     VARCHAR2(50),
  create_time VARCHAR2(50),
  sign_value  CLOB,
  original    CLOB
);
-- Add comments to the columns 
comment on column SIGN_INFOMATION.id
  is '主键';
comment on column SIGN_INFOMATION.business_id
  is '唯一标识ID';
comment on column SIGN_INFOMATION.user_name
  is '用户名';
comment on column SIGN_INFOMATION.user_id
  is '用户id';
comment on column SIGN_INFOMATION.create_time
  is '创建时间';
comment on column SIGN_INFOMATION.sign_value
  is '签名信息-密文';
comment on column SIGN_INFOMATION.original
  is '原文信息-原文';

猜你喜欢

转载自blog.csdn.net/zyp112/article/details/80845505