java如何在ECDSA中处理基址顺序较长的短哈希
我使用的是CVC证书(如果你没听说过,假设它们是X509),带有带brainpool256r1曲线和SHA1散列的椭圆曲线签名。在使用bouncycastle的java中,我只需像这样验证它们:
Signature sign = Signature.getInstance("SHA1withECDSA", "BC");
sign.initVerify(key);
sign.update(certificate_data_to_be_verified);
sign.verify(signature);
一切正常。然而,我还需要在嵌入式设备中验证它们,我遇到了一个问题,因为我应该使用最左边的256位哈希来获得z
的值,至少根据wikipedia ECDSA article。但SHA1只有160位
bouncycastle是如何解决这个问题的?对于如何处理这个问题,是否有一些通用的理论
# 1 楼答案
将基点顺序与关键点长度混淆
下面是Bouncy Castle code如何执行ECDSA数字签名验证