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

调用PGPONEPassSignature时签名长度不正确。请验证

慎建本
2023-03-14
gpg --armor --local-user=name.of.software --sign

我知道这是一个非常特殊的问题,对于一个显然不是很知名的图书馆。因此,我很感激任何小小的反馈或投入。

共有1个答案

公西毅
2023-03-14

看起来是bouncycastle中的一个bug,只在1.6以后的Java版本中遇到,bouncycastle总是创建错误的数据,但是Java在验证时接受的数据从1.7开始变得更加严格。

Bouncycastle在将签名序列化到文件时未能将其填充到正确的长度,如果整数有足够多的前导零,则其字节表示形式将更小。
Java版本1.7或更高版本期望RSA签名字节的长度与密钥相同。

Bouncycastle将RSA签名字节数组(从Java的RSA JCE提供程序返回)转换为整数,并丢弃有关其长度的信息。PGPSignatureGenerator
第263行显示了RSA签名字节数组从JCE返回并转换为整数的位置。

 类似资料:
  • 问题内容: 我正在使用和 (Bouncycastle库) 签署,然后验证。 这是我签署的: 现在,输出将在这一过程中使用的: 一切正常,直到由于以下原因: 有人可以给我提示可能发生的事情吗? PS 。如果有人要进行上述测试,则将需要我用来复制此文件的测试文件,只需从这里开始即可: https://www.dropbox.com/s/zs4jo1a86v8qamw/certificates.p12?

  • 我正在使用和(Bouncycastle库)对进行签名,然后验证。 由于以下,: 谁能给我一个可能会发生什么事的提示吗? ps.如果有人想要测试上面的您将需要我正在使用的测试文件来复制该文件,只需从此处即可: https://www.dropbox.com/s/zs4jo1a86v8qamw/certifications.p12?dl=0

  • 问题内容: ECDSA算法中256位EC密钥的签名长度将是多少?我想验证签名长度是否相同。如果某个机构可以帮助我设置一个EC钥匙,那将是很棒的。 问题答案: 这取决于您如何对签名进行编码。这是OpenSSL的代码段,用于测量DER格式的ECDSA签名的长度。 以prime256曲线上的EC_KEY作为参数的上述函数的结果是 sig_len在哪里。 您需要使用位EC密钥的字节来进行DER编码的ECD

  • 我在我的控制台上收到垃圾警告。我能找到的唯一信息是,大多数人在列表视图中启用快速滚动时会得到它。我没有使用任何列表视图。它说它被CollapsingToolbarLayout,AppCompatTextView,Toolbar,有时是AppBarLayout错误地调用。每当我快速上下“投掷”嵌套滚动视图以折叠和展开工具栏时,就会发生这种情况。 日志: xml:

  • 我传入以下内容(摘要/哈希是SHA1): 到此功能: 但我无法在OpenSSL中验证签名(verify_success为0),即使完全相同的数据在C#中验证成功。 关于我为什么或做错了什么的任何想法? C#中的公钥是: 我假设4543533120000000是。NET特定的东西,所以我只是把04前置到它的其余部分。 这是用于验证签名的C#代码,它成功地做到了(dataBytes的SHA1在两个程序

  • 问题内容: 因此,我试图用Java生成ECDSAwithHA256签名,为此,我使用的是BouncyCastle提供程序。曲线是secp521r1。 要初始化我正在使用的签名者: 并签署我正在使用 现在唯一的问题是,当我运行代码时,我得到的签名长度在137到139字节之间。但我希望得到的字节数始终相同。有人知道我必须更改什么,即我的签名长度始终相同,但仍然是标准的签名格式吗? 问题答案: 通常,J