我可以在 JavaCard 3.0.4 中使用预先计算的哈希来验证签名吗

Can I verify signature using a precomputed hash in JavaCard 3.0.4

我了解到在 Javacard 3.0.5 中有一个 API 可以这样做 verifyPreComputedHash()。 3.0.4 呢?是否可以先使用 setInitialDigest() 加载预先计算的哈希值,然后再调用 verify()?如果可能的话,谁能举个例子。

不,那不可能。用于 SHA-1 和 SHA-2 等哈希算法的填充由位填充和消息大小组成。不幸的是,填充总是必要的,在最后一次调用 signatureverify.

之前,完整消息的大小是 unknown

就我个人而言,我从未理解过这种 setInitialDigest 方法。只有当要签名的数据在平台和芯片之间分开时才有意义。此外,它依赖于 中间散列值 的特定编码,该编码定义不明确。对于新设计/平台,我肯定会选择 verifyPreComputedHash。但恐怕如果你在 3.0.5 之前使用任何东西,这就没什么用了。