SM2Utils NoSuchMethodError: org.bouncycastle.math.ec.ECFieldElement$Fp.<init
1,报错图示
2,报错原因:
NoSuchMethodError 表示运行时找不到某个方法,通常是编译时依赖的库版本与运行时使用的库版本不一致。
错误中的 ECFieldElement$Fp. 构造函数参数为 (BigInteger, BigInteger),说明代码期望使用旧版本的 Bouncy Castle(例如 1.68 或更早),但实际运行时加载了新版本(如 1.70+),而新版本中该构造函数已被弃用或修改。
3,解决方案
降低版本1.70变为1.52
<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.52</version></dependency>
4,SM2和bouncycastle关系
org.bouncycastle 提供了广泛的国际通用密码学算法实现,而 SM2Utils 专注于中国的商用密码算法;
bouncycastle 是一个基层方法jar包,SM2Utils在此基础上根据自己需求进行封装;