7

ECDSA アルゴリズムの 256 ビット EC キーの署名の長さは? 同じ署名の長さを検証したかったのです。1 つの EC キー セットについて誰かが私を助けてくれれば、それは素晴らしいことです。

4

1 に答える 1

11

署名のエンコード方法によって異なります。これは、ECDSA 署名の長さを DER 形式で測定する OpenSSL のコード セグメントです。

/** 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.

72256 ビットの EC キーを使用して DER でエンコードされた ECDSA 署名にはバイトが必要です。

于 2013-06-26T06:19:24.573 に答える