ECDSA签名长度

ECDSA算法中256位EC密钥的签名长度将是多少?我想验证签名长度是否相同。如果某个机构可以帮助我设置一个EC钥匙,那将是很棒的。

回答:

这取决于您如何对签名进行编码。这是OpenSSL的代码段,用于测量DER格式的ECDSA签名的长度。

/** ECDSA_size

* returns the maximum length of the DER encoded signature

* \param eckey pointer to a EC_KEY object

* \return numbers of bytes required for the DER encoded signature

*/

int ECDSA_size(const EC_KEY *r)

{

int ret,i;

ASN1_INTEGER bs;

BIGNUM *order=NULL;

unsigned char buf[4];

const EC_GROUP *group;

if (r == NULL)

return 0;

group = EC_KEY_get0_group(r);

if (group == NULL)

return 0;

if ((order = BN_new()) == NULL) return 0;

if (!EC_GROUP_get_order(group,order,NULL))

{

BN_clear_free(order);

return 0;

}

i=BN_num_bits(order);

bs.length=(i+7)/8;

bs.data=buf;

bs.type=V_ASN1_INTEGER;

/* If the top bit is set the asn1 encoding is 1 larger. */

buf[0]=0xff;

i=i2d_ASN1_INTEGER(&bs,NULL);

i+=i; /* r and s */

ret=ASN1_object_size(1,i,V_ASN1_SEQUENCE);

BN_clear_free(order);

return(ret);

}

以prime256曲线上的EC_KEY作为参数的上述函数的结果是

sig_len = ECDSA_size(eckey);

sig_len在哪里72

您需要72使用256位EC密钥的字节来进行DER编码的ECDSA签名。

以上是 ECDSA签名长度 的全部内容, 来源链接: utcz.com/qa/432774.html

回到顶部