jdkkeypairgenerator.java

来自「bouncycastle 是一个JAVA安全提供者」· Java 代码 · 共 490 行 · 第 1/2 页

JAVA
490
字号
package org.bouncycastle.jce.provider;import java.math.BigInteger;import java.security.InvalidAlgorithmParameterException;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.SecureRandom;import java.security.spec.AlgorithmParameterSpec;import java.security.spec.DSAParameterSpec;import java.security.spec.RSAKeyGenParameterSpec;import java.util.Hashtable;import javax.crypto.spec.DHParameterSpec;import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;import org.bouncycastle.crypto.AsymmetricCipherKeyPair;import org.bouncycastle.crypto.generators.DHBasicKeyPairGenerator;import org.bouncycastle.crypto.generators.DHParametersGenerator;import org.bouncycastle.crypto.generators.DSAKeyPairGenerator;import org.bouncycastle.crypto.generators.DSAParametersGenerator;import org.bouncycastle.crypto.generators.ECKeyPairGenerator;import org.bouncycastle.crypto.generators.ElGamalKeyPairGenerator;import org.bouncycastle.crypto.generators.ElGamalParametersGenerator;import org.bouncycastle.crypto.generators.GOST3410KeyPairGenerator;import org.bouncycastle.crypto.generators.GOST3410ParametersGenerator;import org.bouncycastle.crypto.generators.RSAKeyPairGenerator;import org.bouncycastle.crypto.params.*;import org.bouncycastle.jce.ECNamedCurveTable;import org.bouncycastle.jce.provider.JDKGOST3410PrivateKey;import org.bouncycastle.jce.provider.JDKGOST3410PublicKey;import org.bouncycastle.jce.spec.ECParameterSpec;import org.bouncycastle.jce.spec.ElGamalParameterSpec;import org.bouncycastle.jce.spec.GOST3410ParameterSpec;import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec;public abstract class JDKKeyPairGenerator    extends KeyPairGenerator{    public JDKKeyPairGenerator(        String              algorithmName)    {        super(algorithmName);    }    public abstract void initialize(int strength, SecureRandom random);    public abstract KeyPair generateKeyPair();    public static class RSA        extends JDKKeyPairGenerator    {        final static BigInteger defaultPublicExponent = BigInteger.valueOf(0x10001);        final static int defaultTests = 8;        RSAKeyGenerationParameters  param;        RSAKeyPairGenerator         engine;        public RSA()        {            super("RSA");            engine = new RSAKeyPairGenerator();            param = new RSAKeyGenerationParameters(defaultPublicExponent,                            new SecureRandom(), 2048, defaultTests);            engine.init(param);        }        public void initialize(            int             strength,            SecureRandom    random)        {            param = new RSAKeyGenerationParameters(defaultPublicExponent,                            random, strength, defaultTests);            engine.init(param);        }        public void initialize(            AlgorithmParameterSpec  params,            SecureRandom            random)            throws InvalidAlgorithmParameterException        {            if (!(params instanceof RSAKeyGenParameterSpec))            {                throw new InvalidAlgorithmParameterException("parameter object not a RSAKeyGenParameterSpec");            }            RSAKeyGenParameterSpec     rsaParams = (RSAKeyGenParameterSpec)params;            param = new RSAKeyGenerationParameters(                            rsaParams.getPublicExponent(),                            random, rsaParams.getKeysize(), defaultTests);            engine.init(param);        }        public KeyPair generateKeyPair()        {            AsymmetricCipherKeyPair     pair = engine.generateKeyPair();            RSAKeyParameters            pub = (RSAKeyParameters)pair.getPublic();            RSAPrivateCrtKeyParameters  priv = (RSAPrivateCrtKeyParameters)pair.getPrivate();            return new KeyPair(new JCERSAPublicKey(pub),                               new JCERSAPrivateCrtKey(priv));        }    }    public static class DH        extends JDKKeyPairGenerator    {        DHKeyGenerationParameters  param;        DHBasicKeyPairGenerator    engine = new DHBasicKeyPairGenerator();        int                        strength = 1024;        int                        certainty = 20;        SecureRandom               random = new SecureRandom();        boolean                    initialised = false;        public DH()        {            super("DH");        }        public void initialize(            int             strength,            SecureRandom    random)        {            this.strength = strength;            this.random = random;        }        public void initialize(            AlgorithmParameterSpec  params,            SecureRandom            random)            throws InvalidAlgorithmParameterException        {            if (!(params instanceof DHParameterSpec))            {                throw new InvalidAlgorithmParameterException("parameter object not a DHParameterSpec");            }            DHParameterSpec     dhParams = (DHParameterSpec)params;            param = new DHKeyGenerationParameters(random, new DHParameters(dhParams.getP(), dhParams.getG()));            engine.init(param);            initialised = true;        }        public KeyPair generateKeyPair()        {            if (!initialised)            {                DHParametersGenerator   pGen = new DHParametersGenerator();                pGen.init(strength, certainty, random);                param = new DHKeyGenerationParameters(random, pGen.generateParameters());                engine.init(param);                initialised = true;            }            AsymmetricCipherKeyPair   pair = engine.generateKeyPair();            DHPublicKeyParameters     pub = (DHPublicKeyParameters)pair.getPublic();            DHPrivateKeyParameters priv = (DHPrivateKeyParameters)pair.getPrivate();            return new KeyPair(new JCEDHPublicKey(pub),                               new JCEDHPrivateKey(priv));        }    }    public static class DSA        extends JDKKeyPairGenerator    {        DSAKeyGenerationParameters param;        DSAKeyPairGenerator        engine = new DSAKeyPairGenerator();        int                        strength = 1024;        int                        certainty = 20;        SecureRandom               random = new SecureRandom();        boolean                    initialised = false;        public DSA()        {            super("DSA");        }        public void initialize(            int             strength,            SecureRandom    random)        {            this.strength = strength;            this.random = random;        }        public void initialize(            AlgorithmParameterSpec  params,            SecureRandom            random)            throws InvalidAlgorithmParameterException        {            if (!(params instanceof DSAParameterSpec))            {                throw new InvalidAlgorithmParameterException("parameter object not a DSAParameterSpec");            }            DSAParameterSpec     dsaParams = (DSAParameterSpec)params;            param = new DSAKeyGenerationParameters(random, new DSAParameters(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG()));            engine.init(param);            initialised = true;        }        public KeyPair generateKeyPair()        {            if (!initialised)            {                DSAParametersGenerator   pGen = new DSAParametersGenerator();                pGen.init(strength, certainty, random);                param = new DSAKeyGenerationParameters(random, pGen.generateParameters());                engine.init(param);                initialised = true;            }            AsymmetricCipherKeyPair   pair = engine.generateKeyPair();            DSAPublicKeyParameters     pub = (DSAPublicKeyParameters)pair.getPublic();            DSAPrivateKeyParameters priv = (DSAPrivateKeyParameters)pair.getPrivate();            return new KeyPair(new JDKDSAPublicKey(pub),                               new JDKDSAPrivateKey(priv));        }    }    public static class GOST3410        extends JDKKeyPairGenerator    {        GOST3410KeyGenerationParameters param;        GOST3410KeyPairGenerator        engine = new GOST3410KeyPairGenerator();        GOST3410ParameterSpec           gost3410Params;        int                             strength = 1024;        SecureRandom                    random = null;        boolean                         initialised = false;                public GOST3410()        {            super("GOST3410");        }                public void initialize(                int             strength,

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?