function sm2EncryptPwd(data) {
var publicKey = ‘04XXXXXXXXXXXXXXXXXXXXXXXXXXXCB42F6044B1BA8640B42AE038252F3490F02029E37B91D6E0796DE0B3D67166CDD971E556EF1D6B54ED350031817DED6B0C40’;
return sm2Encrypt(data, publicKey, 1);
}
公钥用后端的生成公私钥对方法生成,请勿使用文章提到的公私钥对。
例如login.js使用了加密,即
login.js,调用加密函数
var encryptedPwd = sm2EncryptPwd(pwd);
3.后端Java解密
引用依赖库 bcprov-jdk15on-1.68.jar
org.bouncycastle
bcprov-jdk15on
1.68
login.java
私钥附上对应的值
pwd = new String(SM2Utils.decrypt(pwd, sm2PrivKey));
Sm2Utils.java
package com.sgsg.basic.encrypt.util;
import org.bouncycastle.asn1.gm.GMNamedCurves;
import org.bouncycastle.asn1.x9.X9ECParameters;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.engines.SM2Engine;
import org.bouncycastle.crypto.params.ECDomainParameters;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.crypto.params.ParametersWithRandom;
import org.bouncycastle.crypto.signers.SM2Signer;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.spec.ECParameterSpec;
import org.bouncycastle.jce.spec.ECPrivateKeySpec;
import org.bouncycastle.math.ec.ECPoint;
import org.bouncycastle.util.encoders.Hex;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.spec.ECGenParameterSpec;
import java.util.Base64;
/**
- SM2工具类
- @author van
*/
public class SM2Utils {
/**
- 生成 SM2 公私钥对
- @return
- @throws NoSuchAlgo