当前位置: 首页 > 知识库问答 >
问题:

Bouncy Castle:每次运行时都有独立的信封签名更改

郎雪风
2023-03-14

我正在跟踪生成和验证数字签名的帖子。签名的数据在所有运行时保持不变,但分离的包络签名在每次运行时都不同。同一文本如何生成不同的分离包络签名?

共有1个答案

靳富
2023-03-14

要让这些评论成为答案...

同一私钥对同一数据的签名可能有所不同,主要有两个原因。

某些签名算法,主要是DSA和ECDSA,显式地基于随机选择的值k来创建签名。这种“随机性”是必需的,随机签名值k的熵、保密性和唯一性是关键的。如果违反这三个要求中的任何一个,就会向攻击者泄露整个私钥,这一点非常关键。两次使用相同的值(即使是在对k保密的情况下),使用一个可预测的值,或者在几个签名中的每一个中泄露哪怕几位k,都足以破坏算法。这一要求可以由一个实际随机的k或由一个以确定性方式构建的k来满足,该确定性方式还保证熵、保密性和唯一性。RFC 6967。

OP使用CMS签名容器。因此,这很可能是OP签名变化的原因。

 类似资料:
  • 问题内容: 目标:在Eclipse中找到一种方法来执行JUnit类中的所有测试,该方法在每次测试之前而不是一次重新加载Spring上下文。 场景:我继承了DAO测试套件,该套件使用了HSQL内存数据库,该数据库在上下文加载时使用一些示例数据进行了初始化。在运行测试时,我注意到如果执行了整个类,则所有测试都将通过。但是特定的测试方法在单独执行时会失败。显然,测试不是独立的,早期测试会更改数据库状态并

  • 目标:在Eclipse中找到一种方法来执行JUnit类中的所有测试,该类在每次测试之前重新加载Spring上下文,而不是一次。 场景:我继承了DAO测试套件,它使用内存中的HSQL数据库,该数据库在上下文加载时使用一些示例数据进行初始化。在运行测试时,我注意到如果执行整个类,所有测试都会通过。但具体的测试方法在单独执行时失败。显然,这些测试并不是独立的,早期的测试正在改变数据库状态,而不是在它们自

  • 安装Spark独立模式集群 安装Spark独立模式,你只需要将Spark的编译版本简单的放到集群的每个节点。你可以获得每个稳定版本的预编译版本,也可以自己编译。 手动启动集群 你能够通过下面的方式启动独立的master服务器。 ./sbin/start-master.sh 一旦启动,master将会为自己打印出spark://HOST:PORT URL,你能够用它连接到workers或者作为"m

  • 在最初创建和发送DocuSign信封时,我定义了收件人需要签名的位置和签名日期的位置。这与eSignatures REST API配合得很好。 当文档中做了一些更改(信封状态为发送或传递)时,信封的文档仍然可以更新。使用下面的代码,我可以更新文档和电子邮件主题/正文。重新发送后,我正确地得到对电子邮件和文档所做的更改。 这是我发送信封时的请求体。signer选项卡是用anchorString添加的

  • 我创建了一个包含多个文档的docusign模板。模板声明了3个签名角色。然后,我从该模板创建一个有3个收件人信封。模板和我们的帐户启用了文档可见性,这样签名者只能查看他们必须签名的文档。在信封由所有三个签名完成后,我需要将每个完成的信封的PDF存储在我们站点上不同的收件人帐户下。由于启用了文档可见性,因此不能为所有3个签名者提供一个PDF。这将打破可见性功能,他们将能够看到彼此的私人信息。相反,必

  • 我正在尝试在Ubuntu上以独立的方式运行Apache地图集 - 这意味着不必设置Solr和/或HBase。我所做的(根据文档:http://atlas.apache.org/0.8.1/InstallationSteps.html)是克隆Git存储库,使用mbadded的HBase和dSolr构建maven项目: 解压缩了 resuting tar.gz 文件并执行了 bin/atlas_sta