Skip to content

大数在转化为byte数组时会溢出一位 #10

@hyfree

Description

@hyfree

BigInteger 在转化为byte数组时会会出现一个补位

BigInteger 在转化为byte数组时会会出现一个补位,导致最后的sm3-Hash的计算作物,ZA计算错误

需要在计算sm3杂凑值时,做如下处理

byte[] array = bigInteger.toByteArray();
if (array[0] == 0) {
    byte[] tmp = new byte[array.length - 1];
    System.arraycopy(array, 1, tmp, 0, tmp.length);
    array = tmp;
}

SM2.java中的byte[] ZA(String IDA,Ecpoint aPublicKey)中处理

//这一行的sm3hash中的参数都要做上面的处理
byte[] ZA=sm3hash(............................);

链接
BigInteger to byte[]

IDA

USERID说明

请参阅SM2椭圆曲线公钥密码算法-P54 用户其他信息一栏。
USERID非IDa

设用户A的身份是:ALICE123@YAHOO.COM。用ASCII编码记ID A :
414C 49434531 32334059 41484F4F 2E434F4D。ENTL A =0090。

https://github.com/hyfree/SM2_SM3_SM4Encrypt/tree/add_pdf/pdf

#9

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions