0

我已经编译了openssl 1.0.2 with FIPS 2.0.16对象模块。我将使用它使用私钥对某些文件进行签名,并使用公钥验证签名。我将使用EVP_*算法。

使用私钥对文件进行签名将在 Web 界面中进行,然后将文件和签名放入某个设备中,通过使用公钥验证签名来验证文件的完整性。

  1. 现在我的问题是 Web 界面将有一个64 BIT libcrypto.a,并且验证签名的设备可能有32/64 BIT libcrypto.a,所以为两者生成的签名64/32 bit会相同吗?
  2. 我可以使用64 BIT libcrypto.a签名和验证签名32 BIT libcrypto.a吗?
4

1 回答 1

2

无论您使用 32 位还是 64 位 libcrypto,都没有区别。您可以使用其中一个创建签名并使用另一个进行验证,反之亦然。

现在我的问题是,Web 界面将具有 64 位 libcrypto.a 并且验证签名的设备可能具有 32/64 位 libcrypto.a 那么为 64/32 位生成的签名会相同吗?

这取决于你的意思是“相同”。正如我上面所说,使用 32 位或 64 位 libcrypto 没有区别。使用的算法是相同的。然而,并非所有的签名算法都是确定性的,即一些算法,如 DSA 和 ECDSA,在签名中包含随机分量。因此,如果您使用相同的密钥对相同的数据进行两次签名,您可能会得到不同的结果。然而,这两个签名都是有效的,并且都会验证。

于 2019-09-18T09:03:41.860 回答