我正在使用带有 Brainpool256r1 曲线和 SHA1 哈希的椭圆曲线签名的 CVC 证书(如果您还没有听说过它们,就假装它们是 X509)。在带有 bouncycastle 的 java 中,我只是像这样验证它们:
Signature sign = Signature.getInstance("SHA1withECDSA", "BC");
sign.initVerify(key);
sign.update(certificate_data_to_be_verified);
sign.verify(signature);
一切正常。但是,我还需要在嵌入式设备中验证它们,我遇到了一个问题,因为我应该使用最左边的 256 位哈希来获得z
至少根据维基百科 ECDSA 文章的值。但 SHA1 只有 160 位。
bouncycastle如何解决这个问题,是否有一些关于如何处理这个问题的一般理论?