提供测试使用的加解密验证工具🔧
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

65 lines
2.9 KiB

package com.fr.password.tool.keys;
import cn.hutool.core.util.ArrayUtil;
import com.fr.password.tool.SecurityToolbox;
import com.fr.password.tool.util.BCECUtil;
import com.fr.password.tool.util.smx.SM2Util;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.spec.RSAKeyGenParameterSpec;
/**
* desc
*
* @author Anner
* created on 2020-10-22
*/
public class LoadSeedKeys {
private static LoadSeedKeys instance = new LoadSeedKeys();
private LoadSeedKeys() {
}
public static LoadSeedKeys getInstance() {
return instance;
}
public byte[] loadSeedFile(String seed1, String seed2, String seed3) {
byte[] random = new byte[0];
random = ArrayUtil.addAll(random, seed1.getBytes());
random = ArrayUtil.addAll(random, seed2.getBytes());
random = ArrayUtil.addAll(random, seed3.getBytes());
return random;
}
public String[] generateRSAKeys(byte[] random) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
FineSecureRandom fineSecureRandom = new FineSecureRandom(random);
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
//传入一个伪随机源,保证相同seed产生相同密钥
keyPairGenerator.initialize(new RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4), fineSecureRandom);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
String decodeKey = SecurityToolbox.getInstance().getPrivateKey(keyPair);
String encodeKey = SecurityToolbox.getInstance().getPublicKey(keyPair);
return new String[]{encodeKey, decodeKey};
}
public String generateSM2Keys(byte[] random) throws InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException, IOException {
FineSecureRandom secureRandom = new FineSecureRandom(random);
KeyPair keyPair = BCECUtil.generateKeyPair(SM2Util.DOMAIN_PARAMS, secureRandom);
ECPrivateKeyParameters privateKeyParameters = BCECUtil.convertPrivateKeyToParameters((BCECPrivateKey) keyPair.getPrivate());
ECPublicKeyParameters publicKeyParameters = BCECUtil.convertPublicKeyToParameters((BCECPublicKey) keyPair.getPublic());
String key = SecurityToolbox.getInstance().byte2Base64(ByteUtils.toHexString(BCECUtil.convertECPrivateKeyToSEC1(privateKeyParameters, publicKeyParameters)).getBytes());
return key;
}
}