首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECDSA签名长度

ECDSA签名长度
EN

Stack Overflow用户
提问于 2013-06-24 14:30:04
回答 1查看 16.8K关注 0票数 7

ECDSA算法中256位EC密钥的签名长度是多少?我想验证签名长度是否相同。这将是伟大的,如果有人可以帮助我与一个EC密钥组。

EN

回答 1

Stack Overflow用户

发布于 2013-06-26 14:19:25

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

代码语言:javascript
复制
/** 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为参数的上述函数的结果为

代码语言:javascript
复制
sig_len = ECDSA_size(eckey);

其中sig_len是72

对于使用256位EC密钥的DER编码的ECDSA签名,您需要72字节。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17269238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档