精华内容
下载资源
问答
  • activity任意节点动态加签
    万次阅读 热门讨论
    2020-07-12 16:05:20

    前言

    在之前的章节中,我们聊到了activity可以解决动态的任意加签节点的问题,但那时候我们的加签节点是临时存储的,而在现实的业务中,往往需要通过创建自身的业务表与activity的表建立一定的业务关系,从而实现数据持久化,即我们加签的节点不能因为加签完毕后就找不到历史数据了

    activity和mybatis实现了较好了的整合,如果采用spring的xml方式进行配置的话,我们只需要导入mybatis的依赖并进行简单的配置即可

    下面我们先通过一个简单的例子,体验一下如何将自建的业务表数据存储进去

    1、建表语句

    CREATE TABLE `act_creation` (
      `ID` int(11) NOT NULL AUTO_INCREMENT,
      `PROCESS_DEFINITION_ID` varchar(255) DEFAULT NULL COMMENT '流程定义id',
      `DOUSERID` varchar(20) DEFAULT NULL COMMENT '操作人id',
      `ACT_ID` varchar(64) DEFAULT NULL,
      `PROCESS_INSTANCE_ID` varchar(255) NOT NULL DEFAULT '0' COMMENT '流程实例id',
      `PROPERTIES_TEXT` varchar(2000) DEFAULT NULL COMMENT '参数',
      `STATE_` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0代表有效 1代表无效',
      `create_time` timestamp NULL
    更多相关内容
  • 海关179加签原理及加签步骤介绍

    千次阅读 2020-07-24 08:26:24
    海关179号公告对接,其中要用到一个usbkey加签数据上报,很多人多这个了解不够深入,导致对接困难,下面就加签原理进行阐述 1.为什么要用usbkey 法律责任,认定 2.加签原理 Sha1WithRsa 非对称加签 3.私钥加签公钥验证...

    大家知道,海关手续办完后,会给2个usbkey,
    一个是法人卡,一个是操作员卡,这两个卡操作权限不一样,这个操作员卡是用来对179报文进行数字签名的

    什么是数字签名

    所谓数字签名,采用的签名技术是,业界ATM机级别的加密技术,也是业内大名鼎鼎的非对称加密技术RSA
    普通的加密可分为几类
    格式加密:
    如base64加密,urlencode,
    算法公开,没有key,谁拿到密文都可以解密
    摘要算法
    md5,sha1,sha224,sha256,sha512等
    常用的是md5,
    这种就是计算摘要,使用这拿到原文后,通过摘要算法与摘要进行比较,如果相等则证明没有被篡改
    摘要就是不可逆,md5使用很多,比如压缩包就有文件的md5校验
    这个其实不算加密,因为无法解密
    这个算摘要验证,其中大名鼎鼎的比特币用的就是sha256摘要
    就是给出一个值的sha256摘要,然后挖矿者随机计算摘要值然后,对碰,如果碰到了就算你挖矿成功
    对称加密:
    des,3des,aes
    这种就是加密方和解密用的是同一个key
    加密方和解密方拿到的是同一把钥匙,只要拿到了钥匙就能打开密室
    看到密文
    非对称加密:
    RSA,这种是非对称性加密
    可以加解密,公钥加密,私钥解密
    也可私钥签名,公钥验签
    私钥是要自己保存的,要保存好, 公钥是可以随便给别人的
    也就是说如果加密传输的话
    双方都要有各自的私钥与公钥, 自己保留私钥,公钥给对方
    公钥有: 有普通公钥,有X509证书
    海关用的是x509证书
    加密方式有Sha1WithRsa,Sha256WithRsa
    海关用的是Sha1WithRsa

    为什么要加签

    机密性:通讯报文采用rsa算法加密,不可读,加密的消息只要收方能够解密
    防篡改:收方验证消息签名,能够发先任何更改
    防抵赖:收方收到到的消息签名由发方的私钥运算生成,其他人无法生成对应信息,法律责任,认定
    身份认证:收方能够解密信息,发方默认收方身份合法

    加签原理是什么

    海关采用的是Sha1WithRsa

    海关加签方式有三种:
    usbkey加签, 公服加签,加密机加签
    usbkey加签
    私钥及加密算法,刻录到usbkey硬件里了,
    私钥无法导出,视图导出私钥的请放弃这种想法
    这种usbkey需要用海关的专用软件来驱动,是用c++编写的,对外提供dll接口和webservice
    驱动是windows,只能在windows机器上使用
    公服加签,云加签
    这个上海有,
    其实是把usbkey里的文件刻在了光盘上,光盘是寄给公服平台,
    公服平台用光盘里的证书,来加签,具体实现形式不清楚
    加密机加签
    与usbkey类似,只是效率高一些

    怎么加签

    usbkey的话
    通过websocket服务器,wss: 61231,ws: 61232,加签
    通过调用dll方式加签,效率高一些,稳定性好一些
    加签的内容是179独有的格式字符串,海关对接会给例子,参照例子来就行,不同于其他总署报文的加签内容
    公服就是通过公服的接口加签,云加签

    展开全文
  • RSA加签解签方法

    千次阅读 2020-09-05 16:19:50
     在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回

    一、RSA签名的过程

    (1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

    (2)A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。

    (3)B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的。

      在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。

    二、具体使用方法

    1.通过RSA秘钥生成工具生成一对公钥和私钥

     

    2.定义加密解密和加签验签方法名

    //加密解密算法
    private static final String ALGORITHM_RSA = "RSA";
    ​
    //加签验签算法
    private static final String ALGORITHM_SHA1WITHRSA = "SHA1withRSA";
    ​
    private static final String CHARSET = "UTF-8";

     

    3.加密解密方法

    (1)初始化公钥私钥

    /**
     * 初始化公钥私钥,将公钥私钥放入map中
     * @return
     * @throws NoSuchAlgorithmException
     */
    public static Map<String, Object> initKey() throws NoSuchAlgorithmException {
       //获得对象 KeyPairGenerator 参数 RSA 1024个字节
       KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM_RSA);
       keyPairGenerator.initialize(1024);
       KeyPair keyPair = keyPairGenerator.generateKeyPair();
       RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
       RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
       //将公私钥对象存入map中,PUBLIC_KEY和PRIVATE_KEY为你自动生成的公私钥
       Map<String, Object> keyMap = new HashMap<>(2);
       keyMap.put(PUBLIC_KEY,rsaPublicKey);
       keyMap.put(PRIVATE_KEY,rsaPrivateKey);
       return keyMap;
    }

    (2)获取规范公钥和规范私钥

    public static String getPublicKey(Map<String, Object> keyMap) throws Exception {
       Key key = (Key) keyMap.get(PUBLIC_KEY);
       return Base64.encodeBase64String(key.getEncoded());
    }
    ​
    /**
     * 将原始私钥进行处理,获取规范私钥
     * @param keyMap
     * @return 返回规范私钥
     * @throws Exception
     */
    public static String getPrivateKey(Map<String, Object> keyMap) throws Exception {
       Key key = (Key) keyMap.get(PRIVATE_KEY);
    ​
       return Base64.encodeBase64String(key.getEncoded());
    }

    (3)键值对转换成url方法

    加签过程中需要通过formatSignContent()函数进行格斯转换,将键值对格式转换为url参数格式

    /**
     * 格式转换,将map中键值对转换为url参数格式
     * @param params 传递参数的键值对,用map保存
     * @return 参数的url表示方法,例如:key1=111&key2=222
     */
    private static String formatSignContent(Map<String, String> params) {
       //利用TreeMap将键值对排序
       Map<String, String> sortedParams = new TreeMap<String, String>();
       sortedParams.putAll(params);
       StringBuilder content = new StringBuilder();
       int index = 0;
       for (Object key : sortedParams.keySet()){
          Object value = sortedParams.get(key.toString());
          if (value != null && StringUtils.isNotBlank(value.toString())) {
             content.append(index == 0 ? "" : "&").append(key).append("=").append(value);
             index++;
          }
       }
       return content.toString();
    }

    (4)加签方法

    A通过自己的私钥对原始数据进行加签,生成加签数据sign,期间需要格式转换

    /**
     * RSA加签方法
     * @param paramsMap 原始数据键值对格式
     * @param privateKey 私钥
     * @return 返回加签数据
     * @throws Exception
     */
    private static String signWithRSA(Map<String,String> paramsMap, String privateKey) throws Exception {
       //将Map键值对转换为url参数格式
       String content = formatSignContent(paramsMap);
       //指定加签算法
       Signature signature = Signature.getInstance(ALGORITHM_SHA1WITHRSA);
       signature.initSign(getPrivateKey(privateKey));
       signature.update(content.getBytes("utf-8"));
       byte[] signed = signature.sign();
       return Base64.encodeBase64String(signed);
    }

    (5)验签方法

    B通过A的公钥和加签数据sign以及传递的参数map进行解签

    /**
     * RSA验签方法
     * 将传递的Map键值对转换为url参数形式
     * @param paramsMap 传递过来的键值对
     * @param publicKey 规范公钥
     * @param sign 加签后的数据
     * @return 验签结果
     * @throws Exception
     */
    private static boolean checkSignWithRSA(Map<String,String> paramsMap, String publicKey, String sign) throws Exception {
       String content = formatSignContent(paramsMap);
       Signature signature = Signature.getInstance("SHA1WithRSA");
       signature.initVerify(getPublicKey(publicKey));
       signature.update(content.getBytes("utf-8"));
       return signature.verify(Base64.decodeBase64(sign));
    }

    (6)实际使用示例

    /**验证加签验签流程
     * 1.A通过自己的私钥对原数据map进行加签,加签后的数据sign
     * 2.A将加签数据sign和原始数据map发送给另外一方B
     * 3.B通过加签数据sign和传递过来的数据map进行通过A的公钥进行解签
     * RSA加签验签方法
     * @return 是否正确
     * @throws Exception
     */
    public static boolean verifySingCheck() throws Exception {
       Map<String, Object> keyMap = initKey();//得到原始公钥、私钥存储的map
       String publicKey = getPublicKey(keyMap);//获取规范公钥
       String privateKey = getPrivateKey(keyMap);//获取规范私钥
    ​
       Map<String,String> map = new HashMap<>();
       map.put("key1","111");
       map.put("key2","222");
    ​
       //传递过程发生了改变
       Map<String,String> map2 = new HashMap<>();
       map2.put("key1","111222");
       map2.put("key2","222");
    ​
       String sign = signWithRSA(map,privateKey);
       boolean check = checkSignWithRSA(map,publicKey,sign);
       //boolean check = checkSignWithRSA(map2,publicKey,sign);//传递过程发生了改变
       System.out.println("签名结果,sign:"+sign);
       System.out.println("验签结果,result:"+check);
       return check;
    }

    展开全文
  • 加密与加签的区别

    千次阅读 2019-07-21 21:39:42
    加签是私钥加签,公钥解签。 加密与加签作用场景的不同 前提 公钥与私钥是成对,所以一个公钥对应一个私钥,一个私钥也只能对应一个公钥——你能在多项式复杂度内找到一个私钥对应的多个公钥,那这种加密方法...

    结论先行

    加密用公钥加密,私钥解密。

    加签是私钥加签,公钥解签。

     

    加密与加签作用场景的不同

    前提

    公钥与私钥是成对,所以一个公钥对应一个私钥,一个私钥也只能对应一个公钥——你能在多项式复杂度内找到一个私钥对应的多个公钥,那这种加密方法本质就是不安全的。(一夫一妻制)

    用公钥加密的,只能用私钥解密。

    用私钥加密的,只能用公钥解密。

    私钥只能握在自己手里,公钥可以发给很多人。

    使用场景

    加密是为了保证加密的原文不被人知道。公钥可以被很多人持有。举例:一个server可以有多个client。那么每个client给我发的东西会不懂,如有的发送用户信息,有的发送我账单信息,这些信息是敏感的,我不希望被其他其他人知道,所以我需要client发送我的信息进行加密。

    加签是为了验证请求来源是指定的server发出的。私钥只有server有,所以当server向client发送请求的时候,私钥只有server才有,client接收到请求的先用公钥验签,判断数据是否真的是由私钥加密的

    这里的举例只是方便大家理由请求。加签或加密不单单是发生在前后台,两个后台服务之间也会有的。看使用场景。

    展开全文
  • 程序员必备基础:加签验签

    千次阅读 多人点赞 2020-08-19 18:01:00
    来源:捡田螺的小男孩我们在求职面试中,经常会被问到,如何设计一个安全对外的接口呢? 其实可以回答这一点,加签和验签,这将让你的接口更加有安全。接下来,本文将和大家一起来学习加签和验签。从...
  • MD5加签验签原理与Java示例

    千次阅读 2019-09-09 16:46:48
    MD5算法的核心原理是利用hash的不可逆性,被加密后的明文无法通过解密函数得到明文,并且一旦明文被改变,加密后的密文也是完全不一样的。有了这个特性之后,支付机构就可以发现被篡改的明文了。MD5算法的过程分为5...
  • Activiti6---流程加签征询实现

    千次阅读 2020-08-14 17:00:09
    加签2. 征询3. 测试 1. 加签 加签是指当前节点审批完后需要额外再加一个审批人进行审批,额外加的审批用户审批完后流程流转到下一节点。比如正常审批流程为A->B->C,如果B执行了加签动作,那么流程就变为A-&...
  • 知道快手标签是什么吗?钓号网告诉你。通俗来讲,标签就是你想做的领域的标签,比如说:当你喜欢美食,经常点赞评论美食的视频,系统就会给你贴上美食的标签,这个我们是看不到的,是记录在后台的。标签的作用在于...
  • activity动态加签任意节点

    万次阅读 热门讨论 2020-07-04 18:23:01
    前言 设想这么一种场景,一个流程有3级审批,其中第一级审批完毕后本应该到达二级审批的,但是可能觉得这个流程模板设置的不尽合理,需要...即不修改模板,新增的节点与当前需要加签的实例挂钩,关于缓存数据,我们可以
  • 初次接触时的场景。。。 经理问我,以前做过证书方面的验证码?我说么有。经理说没关系,学一下就行了,这有个证书验证需要你来做。然后,给了我一个原来项目中的例子,给了我一个工具包,给了我一...可是我不知道。经
  • 加密、解密、加签、验签专题

    千次阅读 2018-09-03 11:31:05
    到了新公司后的第一个需求就是对内容做一个加签,然后传给上游,上游客户端进行验签。需求看似简单,也确实简单,但是,背后的知识足够开一门课程、写一篇论文了,这里笔者用这样一个专题来简要整理一下相关的知识。...
  • 开发中经常会存在不同系统之间的数据共享,那么通过接口方式传输数据就是一件很...加密和加签中用到了非对称性加密(RSA),而非对称性加密需要两个秘钥来进行加密和解密,这两个秘钥是公钥(publickey)和私钥(privateke
  • 加签,验签,CA认证中心流程

    千次阅读 2018-07-16 17:16:50
    概述: 本文主要是为了说明,三者在请求中的位置,以便于更好的理解三者的...过程:加签,验签,CA认证中心的关系如下图,这个只是单服务端需要使用证书的版本。(服务器和客户端都需要使用证书的后续再表)。
  • RSA加密解密及RSA加签验签

    千次阅读 2019-03-27 19:19:15
    RSA安全性应用场景说明 ...加签验签是私钥加签公钥验签,持有私钥(一人持有)可以加签,持有公钥(多人持有)可以验签。  在金融行业在设计到数据交互传输的时候,需要考虑数据的安全性问题。下文通过介绍RSA的...
  • 分享三种给li标签添加图标的方法

    千次阅读 2021-01-14 04:57:41
    我们在页面布局时,经常会用到li标签,单独使用li标签比较单调,有时候为了页面效果,需要加入图片...} //disc的作用是在每个li前一个黑点,其他常用的有square:黑色方块;none:无列表样式;decimal:数字;你还可以...
  • 但是我们怎么知道该加密串是谁发送的呢? 例如: 客户端想服务器请求一个开门的指令 , 服务器返回开A门指令, 客户端得到开门指令后去开A门. 如果服务器返回打开A门指令的途中,该指令被劫持 , 并把打开A门的指令替换...
  • 工作流——加签功能详解

    千次阅读 2013-06-17 16:25:00
    加签:顾名思义就是增加一道审批签名,这个道审批往往是临时...有时为了表示对领导尊重,或者让领导知道这回事,也需要使用加签功能。加签功能也许是中国特色吧。  由于这个加签功能,本来就是不在标准流程中...
  • 智遥工作流--加签功能详解

    千次阅读 2013-06-17 16:32:41
    加签:顾名思义就是增加一道审批签名,这个道审批往往是...有时为了表示对领导尊重,或者让领导知道这回事,也需要使用加签功能。加签功能也许是中国特色吧。    由于这个加签功能,本来就是不在标准流程中的,因此
  • 但是大家都知道美签和加签都很难申请,持有美签的小伙伴,据说申请加签会有95%以上的通过率。并且加签的有效期是十年哦~不管是否换护照,都是十年~ 这篇文章为申请加签去参会或者旅游的的小伙伴写的,不...
  • a标签的字体颜色继承问题

    万次阅读 2017-09-03 19:04:21
    1、不知道 特指度 的同学可以阅读一下我的这篇文章 CSS选择器优先级 2、我查了一下webkit内核浏览器默认样式,a标签的默认设置如下: a :any-link { color : -webkit-link ; text-decoration : ...
  • 加密与验签的区别

    千次阅读 2018-12-21 16:24:21
    一、RSA加密简介  RSA加密是一种非对称加密。...是由一对密钥来进行解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人...
  • filecoin钱包多

    千次阅读 2021-09-01 17:54:34
    钱包 指 需要多个私钥签名授权进行fil交易的钱包。 测试网(https://network.filecoin.io/#calibration)测试多有问题: 创建多钱包能成功且正常返回Created new multisig: f...·具体原因未知,如有知道...
  • 前端开发:a标签实现下载功能

    千次阅读 2020-06-23 16:32:41
    通过a标签的download的属性,将需要下载的文件放在前端项目中,然后href属性访问文件路径(这里一定要是绝对路径,不然上线到服务器就变长脸啦)!!!!!! 代码示例 拿vue来说,我们的文件需放在静态资源的文件夹...
  • 一张图了解RSA解密与验签

    万次阅读 多人点赞 2017-05-10 19:58:08
    比如你们的加签算法用的什么?回答RSA......比如有些机构会对生成的密钥对再用Base64进行编码,这样使用的时候就需要对应的解码,这个过程都被封装在工具类里面了,所以大家看代码的时候尽量多进去看看源码。RSA只
  • 点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~国密SM2概述对国密算法有了解的朋友看到SM2可能会先想到非对称加密,之前的SM4是对称加密。SM4解...
  • 1、私钥和公钥进行解密、验签流程概述 公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),彼此是成对存在的,私钥自己持有、公钥对外公布的。公钥加密的信息...
  • TAG标签页需要nofollow吗 说起这个标签,很多老站长经常在建立新站的时候,会在首页nofollow掉这个标签,而在其他页面保留,原因是什么呢,合理的控制首页蜘蛛的爬行,比如,新站可能会****引蜘蛛到某个列表...
  • H1标签有用吗?怎么使用呢

    万次阅读 2018-09-17 15:00:35
    H3标签用来定义导航栏目名称,H4标签用来定义文章列表标题,但大多数内容系统,文章列表输出用UL标 ,所以H4可能就派不上用场,这里只是以此类推。  第二,文章内容页中,h1一定要用在文章标题上,因为对于搜索...
  • 搭建 超级 详细攻略

    千次阅读 2019-09-23 19:09:08
    开头先说下超级, 也不知道谁起的这么有创意的名字。 简单来说就是用过苹果的个人开发者帐号对用户设备进行针对性打包,然后提供用户下载。PS: 这过程是由系统自动完成。 这个是签名的流程图: 这个就涉及到几个...
  • 本篇文章主要为大家讲解了html中的h1标签的样式解析,但是如果不用css样式来做的话,那就只能在html4.01中显示... 以上就是HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解的详细内容,更多请关注我哦!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 266,938
精华内容 106,775
关键字:

如何知道加签通过了