有玩过phpsm2加密的嘛
用的 “lpilp/guomi”: “^1.0”, 这个包 ,加密解密在php中没问题,但是我加密的数据和java那边对不上,java 不能解密
/**
* 使用公钥加密
*
* @param pubKey 16进制字符串-SM2公钥
* @param dataByte 明文
* @return C1||C3||C2新标准输出格式
*/
private static byte[] encrypt(String pubKey, byte[] dataByte) {
X9ECParameters sm2ECParameters = GMNamedCurves.getByName(SM2_CURVE_NAME);
ECDomainParameters domainParameters =
new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(), sm2ECParameters.getN());
ECPoint ecPoint = sm2ECParameters.getCurve().decodePoint(Hex.decode(pubKey));
ECPublicKeyParameters publicKeyParameters = new ECPublicKeyParameters(ecPoint, domainParameters);
SM2Engine sm2Engine = new SM2Engine(SM2Engine.Mode.C1C2C3);
sm2Engine.init(true, new ParametersWithRandom(publicKeyParameters));
byte[] encryptedData;
try {
encryptedData = sm2Engine.processBlock(dataByte, 0, dataByte.length);
} catch (InvalidCipherTextException e) {
LOG.error("SM2---encrypt failed " + e.getMessage(), e);
throw new CipherException("SM2---encrypt failed", e);
}
return encryptedData;
}
java 加密代码
可以试试这个
github.com/guanzhi/GmSSL
github.com/GmSSL/GmSSL-PHP
github.com/GmSSL/GmSSL-Java