BouncyCastle.NetCore版本1.8.5
给出来公钥是这样的
x9ec.Curve.DecodePoint(pubkey/byte[],内容就是上面的这个pem格式/)就是这句转换就报错
转换就报错{"Invalid point encoding 48"}
片断
var ecc_param = sm2_param;
ECFieldElement ecc_gx_fieldelement;
ECFieldElement ecc_gy_fieldelement;
var ecc_p = new BigInteger(ecc_param[0], 16);
var ecc_a = new BigInteger(ecc_param[1], 16);
var ecc_b = new BigInteger(ecc_param[2], 16);
var ecc_n = new BigInteger(ecc_param[3], 16);
var ecc_gx = new BigInteger(ecc_param[4], 16);
var ecc_gy = new BigInteger(ecc_param[5], 16);
ecc_gx_fieldelement = new FpFieldElement(ecc_p, ecc_gx);
ecc_gy_fieldelement = new FpFieldElement(ecc_p, ecc_gy);
var ecc_curve = new FpCurve(ecc_p, ecc_a, ecc_b);
var ecc_point_g = new FpPoint(ecc_curve, ecc_gx_fieldelement, ecc_gy_fieldelement);
var ecdp = new ECDomainParameters(ecc_curve, ecc_point_g, ecc_n);
var x9ec = GMNamedCurves.GetByName("SM2P256V1");
r = _publicKeyParameters = new ECPublicKeyParameters(x9ec.Curve.DecodePoint(pubkey/*byte[],内容就是上面的这个pem格式*/), ecdp);
不好意思,有点久了,记不太清了。
看错误信息,应该不难调试的,密文不长,一个一个字节的跟一下,看看哪里出错,再查下格式规范,应该不难的,可能比较费时间。
实在抱歉