lpilp / phpsm2sm3sm4

php版本,支持国密SM2的签名算法,非对称加解密,SM3的hash, SM4的对称加解密
320 stars 74 forks source link

sm2怎么取消asn1签名 #41

Closed GUOCHE6 closed 1 year ago

GUOCHE6 commented 1 year ago

sm2怎么取消asn1签名

lpilp commented 1 year ago

不明白你什么意思, 标准签名asn1(r,s), 你是指,你指的取消是返回直接是r + s的字符串组合? 这个你可以修改sm2Singer类的返回值,或者把签名的asn1串解开,只有两个字符串的asn1直接用substr 截出r, s就行,

GUOCHE6 commented 1 year ago

现在使用asn1(r,s)是142位的,想取消asn1;return new Signature( $r, $s );是在这里修改吗

lpilp commented 1 year ago

是的,但不建议用 r+s的形式,可以其他的组合形式,比如json串什么的, 这个r,s的大数运算后,结果上 result%n , 这时就可能算出来的大数就位数就不固定了,就是 r,s的位数有小概率不固定长度,,签名给别人的时候,就不知道如何拆开,所以还得加上补0操作,保证 r, s的位数固定,这种做法不太可取

GUOCHE6 commented 1 year ago

明白了,非常感谢