国密签名过程大概有以下几步:
- 实例化Signature
- 通过PrivateKey初始化
signature.initSign(PrivateKey);
- 写入签名原文到算法中
signature.update(plainText);
- 计算签名值
signaturevalue = signature.sign();
若在运行时报错:
java.security.SignatureException: object not initialized for signature or verification at java.security.Signature.update(Signature.java:766) at java.security.Signature.update(Signature.java:737) at cn.srbank.sm.Sm2Util.sign(Sm2Util.java:122) at cn.srbank.sm.SignAndVerify.sign(SignAndVerify.java:27) at cn.srbank.sm.SignAndVerify.main(SignAndVerify.java:16)
是在做update操作时,此前未使用privateKey初始化Signature引起的,即未调用signature.initSign(PrivateKey);。



