1

我们正在构建一个 Web 应用程序(Java)。有人可以帮我简要介绍一下实现以下业务场景需要什么吗?

  1. 用户访问我们的网站
  2. 他输入了一些数据
  3. 他从输入的数据生成 PDF 文件并将其导出
  4. 他对这个 PDF 文件进行了数字签名
  5. 然后他将此 PDF 文件上传到我们的网站
  6. 系统可以解析 PDF 文件以了解谁签署了该文件,并确保其完整性和不可否认性以及某些后期处理。

我的问题是:

  • 我需要哪些产品/库(商业或免费开源)来实现上述功能?
  • 这些产品是否为开发人员提供 API 以编程方式操作签名过程并从签名文档中检索信息?
  • 上述3~5步进行数字签名是否合理或正确?用户是否可以一步在线签署数据(例如,不导出 PDF 文件)?
4

2 回答 2

1

iText 是一个 java 库,除其他外,它使您能够在 pdf 文档上签名和验证签名。这将使您的用户能够在线签署 pdf。可以在此处找到使用 iText 在 pdf 文档中签名和验证签名的一个很好的示例

该库的许可证是 AGPL,即您需要在 AGPL 下发布您的软件或购买商业许可证。

它曾经属于 LGPL,因此您可以根据 LGPL 条款使用 iText 2.1.7,而无需购买商业许可。

于 2012-09-19T09:24:47.577 回答
0

如果数据位于客户端,那么您最简单的选择是创建一个 Java 小程序,该小程序将在浏览器中执行,并对数据进行签名。任何数据都可以签名,您不需要 PDF 来签名。通用二进制数据可以使用 PKCS#7/CMS 格式或使用 XMLDSig(不太广泛的选项)进行签名。

对于 Java 小程序中的数据签名,您可以使用 BouncyCastle 或我们的 SecureBlackbox(Java 版)。BouncyCastle 是开源的,SecureBlackbox 带有支持、文档和示例。

于 2012-09-18T08:29:29.803 回答