⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsamultiprimeprivatecrtkeyspec.java

📁 JAVA基本类源代码,大家可以学习学习!
💻 JAVA
字号:
/* * @(#)RSAMultiPrimePrivateCrtKeySpec.java	1.5 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.security.spec;import java.math.BigInteger;/** * This class specifies an RSA multi-prime private key, as defined in the  * PKCS#1 v2.1, using the Chinese Remainder Theorem (CRT) information  * values for efficiency. * * @author Valerie Peng * * @version 1.5 03/01/23 * * @see java.security.Key * @see java.security.KeyFactory * @see KeySpec * @see PKCS8EncodedKeySpec * @see RSAPrivateKeySpec * @see RSAPublicKeySpec * @see RSAOtherPrimeInfo * * @since 1.4 */public class RSAMultiPrimePrivateCrtKeySpec extends RSAPrivateKeySpec {    private BigInteger modulus;    private BigInteger publicExponent;    private BigInteger privateExponent;    private BigInteger primeP;    private BigInteger primeQ;    private BigInteger primeExponentP;    private BigInteger primeExponentQ;    private BigInteger crtCoefficient;    private RSAOtherPrimeInfo otherPrimeInfo[];   /**    * Creates a new <code>RSAMultiPrimePrivateCrtKeySpec</code>    * given the modulus, publicExponent, privateExponent,    * primeP, primeQ, primeExponentP, primeExponentQ,    * crtCoefficient, and otherPrimeInfo as defined in PKCS#1 v2.1.    *    * <p>Note that <code>otherPrimeInfo</code> is cloned when constructing    * this object.    *    * @param modulus the modulus n.    * @param publicExponent the public exponent e.    * @param privateExponent the private exponent d.    * @param primeP the prime factor p of n.    * @param primeQ the prime factor q of n.    * @param primeExponentP this is d mod (p-1).    * @param primeExponentQ this is d mod (q-1).    * @param crtCoefficient the Chinese Remainder Theorem    * coefficient q-1 mod p.    * @param otherPrimeInfo triplets of the rest of primes, null can be    * specified if there are only two prime factors (p and q).    * @exception NullPointerException if any of the parameters, i.e.     * <code>modulus</code>,     * <code>publicExponent</code>, <code>privateExponent</code>,     * <code>primeP</code>, <code>primeQ</code>,     * <code>primeExponentP</code>, <code>primeExponentQ</code>,    * <code>crtCoefficient</code>, is null.    * @exception IllegalArgumentException if an empty, i.e. 0-length,    * <code>otherPrimeInfo</code> is specified.    */    public RSAMultiPrimePrivateCrtKeySpec(BigInteger modulus,				BigInteger publicExponent,				BigInteger privateExponent,				BigInteger primeP,				BigInteger primeQ,				BigInteger primeExponentP,				BigInteger primeExponentQ,				BigInteger crtCoefficient,				RSAOtherPrimeInfo[] otherPrimeInfo) {	super(modulus, privateExponent);	if (modulus == null) {	    throw new NullPointerException("the modulus parameter must be " +					    "non-null");	}	if (publicExponent == null) {	    throw new NullPointerException("the publicExponent parameter " +					    "must be non-null");	}	if (privateExponent == null) {	    throw new NullPointerException("the privateExponent parameter " +					    "must be non-null");	}	if (primeP == null) {	    throw new NullPointerException("the primeP parameter " +					    "must be non-null");	}	if (primeQ == null) {	    throw new NullPointerException("the primeQ parameter " +					    "must be non-null");	}	if (primeExponentP == null) {	    throw new NullPointerException("the primeExponentP parameter " +					    "must be non-null");	}	if (primeExponentQ == null) {	    throw new NullPointerException("the primeExponentQ parameter " +					    "must be non-null");	}	if (crtCoefficient == null) {	    throw new NullPointerException("the crtCoefficient parameter " +					    "must be non-null");	} 	this.publicExponent = publicExponent;	this.primeP = primeP;	this.primeQ = primeQ;	this.primeExponentP = primeExponentP;	this.primeExponentQ = primeExponentQ;	this.crtCoefficient = crtCoefficient;	if (otherPrimeInfo == null)  {	    this.otherPrimeInfo = null;	} else if (otherPrimeInfo.length == 0) {	    throw new IllegalArgumentException("the otherPrimeInfo " +						"parameter must not be empty");	} else {	    this.otherPrimeInfo = (RSAOtherPrimeInfo[])otherPrimeInfo.clone();	}    }    /**     * Returns the public exponent.     *     * @return the public exponent.     */    public BigInteger getPublicExponent() {	return this.publicExponent;    }    /**     * Returns the primeP.     *     * @return the primeP.     */    public BigInteger getPrimeP() {	return this.primeP;    }    /**     * Returns the primeQ.     *     * @return the primeQ.     */    public BigInteger getPrimeQ() {	return this.primeQ;    }    /**     * Returns the primeExponentP.     *     * @return the primeExponentP.     */    public BigInteger getPrimeExponentP() {	return this.primeExponentP;    }    /**     * Returns the primeExponentQ.     *     * @return the primeExponentQ.     */    public BigInteger getPrimeExponentQ() {	return this.primeExponentQ;    }    /**     * Returns the crtCoefficient.     *     * @return the crtCoefficient.     */    public BigInteger getCrtCoefficient() {	return this.crtCoefficient;    }        /**     * Returns a copy of the otherPrimeInfo or null if there are      * only two prime factors (p and q).     *     * @return the otherPrimeInfo.     */    public RSAOtherPrimeInfo[] getOtherPrimeInfo() {	if (otherPrimeInfo == null) return null;	return (RSAOtherPrimeInfo[]) otherPrimeInfo.clone();    }}

⌨️ 快捷键说明

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