目前我们已经开发了一个系统,可以使用 java applet 对文档进行数字签名。然而,由于 chrome 禁止小程序,我们正在寻找数字签名的替代解决方案。
目前签名的工作方式如下:
另一种解决方案是在浏览器中导入证书并使用 js 进行签名。但这不是一个用户友好的解决方案。
另一种解决方案可能是要求用户下载一个使用 JNLP 运行的程序,该程序下载并签署文档并使用 HTTP multipart POST 自动上传它。这种方法的缺点是它需要额外的用户交互(下载操作)并且我们会丢失浏览器 http session ,因此我们必须再次进行身份验证。
哪个更可行?你能想到替代方案吗?
最佳答案
以下所有帖子都建议使用基于 RSA 的签名。
您可以使用纯 Javascript+ Web Crypto api 对其进行签名。
重点是用HTML5提取key <file>标记,使用 forge js 库来处理键和散列并使用 deoxxa 规范 xml并使用网络加密进行签名/验证(此外,伪造也可以签名/验证但网络加密更快)。
如果您使用独家规范化签署 xml,请使用 deoxxa(您应该在使用前对其进行浏览器验证)。如果您签署 xml 并需要进行包容性规范化,请使用 my fork of deoxxa (托管在自己的 gitlab 服务器上)。我懒得将 exclusive 重命名为 inclusive 但我的 .js 文件执行 inclusive,相信我)使用示例 forge + deoxxa + html5_p12_file_read在 signJs, verifyJs files .
此外,forge 支持签署二进制文件(CMS 或旧命名样式 PKCS#7),但我的 JSP 文件没有这样的示例。关于JS中的OCSP和链测试-I opened the issue在 forge 中,但在 JS 中处理 CRL/OCSP 和 TSP 协议(protocol)似乎太难了,这就是为什么你可以登录 JS,但验证可能会被拆分 - 在 JS 中进行哈希检查(伪造用法和附加代码显示在我的 JSP 中)但是像 CRL、链等智能检查在您的 Web 服务中执行 - 您可以提取 X509Certificate 并将其发送到您的 Web 服务,并使用 bouncycaSTLe 或任何其他酷库进行智能检查。 X509Certificate 无论如何都是公开信息,将其发送到服务没有问题,但摘要检查需要文件,您可能不想将文件发送到服务,因此使用 forge 来检查我的 verifyJS 文件中显示的摘要。
我的 JS 代码没有重构,甚至没有在 OOP 中,目前我没有在那个项目上工作,但在某个阶段我已经完全使用文件系统中的 p12 key 进行 xml RSA 签名。
我的 repo 中的最新 JSP 仅使用 forge 来解析 p12 文件并将它们中的 key 提供给 Web Crypto API,但我的 repo 历史记录也有纯 Javascript 签名/验证(如果您不喜欢 web crypto api)。查看项目分支的历史。
关于java - Chrome下数字签名小程序的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525477/
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候
前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU