jcersapublickey.java

来自「bouncycastle 是一个JAVA安全提供者」· Java 代码 · 共 128 行

JAVA
128
字号
package org.bouncycastle.jce.provider;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.math.BigInteger;import java.security.interfaces.RSAPublicKey;import java.security.spec.RSAPublicKeySpec;import org.bouncycastle.asn1.ASN1Sequence;import org.bouncycastle.asn1.DERNull;import org.bouncycastle.asn1.DEROutputStream;import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;import org.bouncycastle.asn1.x509.AlgorithmIdentifier;import org.bouncycastle.asn1.x509.RSAPublicKeyStructure;import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;import org.bouncycastle.crypto.params.RSAKeyParameters;public class JCERSAPublicKey    implements RSAPublicKey{    private BigInteger modulus;    private BigInteger publicExponent;    JCERSAPublicKey(        RSAKeyParameters key)    {        this.modulus = key.getModulus();        this.publicExponent = key.getExponent();    }    JCERSAPublicKey(        RSAPublicKeySpec spec)    {        this.modulus = spec.getModulus();        this.publicExponent = spec.getPublicExponent();    }    JCERSAPublicKey(        RSAPublicKey key)    {        this.modulus = key.getModulus();        this.publicExponent = key.getPublicExponent();    }    JCERSAPublicKey(        SubjectPublicKeyInfo    info)    {        try        {            RSAPublicKeyStructure   pubKey = new RSAPublicKeyStructure((ASN1Sequence)info.getPublicKey());            this.modulus = pubKey.getModulus();            this.publicExponent = pubKey.getPublicExponent();        }        catch (IOException e)        {            throw new IllegalArgumentException("invalid info structure in RSA public key");        }    }    /**     * return the modulus.     *     * @return the modulus.     */    public BigInteger getModulus()    {        return modulus;    }    /**     * return the public exponent.     *     * @return the public exponent.     */    public BigInteger getPublicExponent()    {        return publicExponent;    }    public String getAlgorithm()    {        return "RSA";    }    public String getFormat()    {        return "X.509";    }    public byte[] getEncoded()    {        SubjectPublicKeyInfo    info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new RSAPublicKeyStructure(getModulus(), getPublicExponent()).getDERObject());        return info.getDEREncoded();    }    public boolean equals(Object o)    {        if (!(o instanceof RSAPublicKey))        {            return false;        }        if (o == this)        {            return true;        }        RSAPublicKey key = (RSAPublicKey)o;        return getModulus().equals(key.getModulus())            && getPublicExponent().equals(key.getPublicExponent());    }    public String toString()    {        StringBuffer    buf = new StringBuffer();        String          nl = System.getProperty("line.separator");        buf.append("RSA Public Key" + nl);        buf.append("            modulus: " + this.getModulus().toString(16) + nl);        buf.append("    public exponent: " + this.getPublicExponent().toString(16) + nl);        return buf.toString();    }}

⌨️ 快捷键说明

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