通常,Java加密(默认情况下为Bouncy)使用可变长度的ASN.1 DER对ECDSA(也称为DSA)签名进行编码。请参阅Neardupe
ECDSA签名长度并交叉https://crypto.stackexchange.com/questions/33095/shouldnt-a-
signature-using-ecdsa-be-exactly-96-bytes-
not-102-or-103。
但是,对您来说幸运的是,Bouncy(1.51版以上)还实现了名称为 {hash}withPLAIN-ECDSA 或{hash}withCVC-ECDSA(并且也用斜杠代替
with)的P1363样式固定长度编码。在这种情况下,CVC显然意味着卡可验证证书,尽管我不会认为签名编码是有限设备在证书验证中最困难的部分。
更新: Bouncy 1.61(2019-02)修复了注释中提到的“普通”编码中的错误。另外,在Java
9(2018-12)中,标准(Oracle)SunEC提供程序支持以下格式: {hash}withECDSAinP1363format



