RSAPrivateKey.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:2k
源码类别:

CA认证

开发平台:

Java

  1. package org.infosecurity.cryptography;
  2. /**
  3.  * <p>Title: RSA的私钥类 </p>
  4.  * <p>Description: RSA的私钥类 </p>
  5.  * <p>Copyright: Copyright (c) 2003</p>
  6.  * <p>Company: 中信信息安全组织(CISO)</p>
  7.  * @author 张荣华
  8.  * @version 1.0.2003.0704
  9.  */
  10. import java.math.BigInteger;
  11. import java.security.SecureRandom;
  12. import org.bouncycastle.asn1.*;
  13. import org.bouncycastle.asn1.pkcs.*;
  14. public class RSAPrivateKey extends RSAPublicKey{
  15.     private BigInteger  d;
  16.     private BigInteger  p;
  17.     private BigInteger  q;
  18.     private BigInteger  dP;
  19.     private BigInteger  dQ;
  20.     private BigInteger  qInv;
  21.     /**
  22.      *
  23.      */
  24.     public RSAPrivateKey(
  25.         BigInteger  modulus,
  26.         BigInteger  publicExponent,
  27.         BigInteger  privateExponent,
  28.         BigInteger  p,
  29.         BigInteger  q,
  30.         BigInteger  dP,
  31.         BigInteger  dQ,
  32.         BigInteger  qInv)
  33.     {
  34.         super(modulus,publicExponent);
  35.         this.d  = privateExponent;
  36.         this.p  = p;
  37.         this.q  = q;
  38.         this.dP = dP;
  39.         this.dQ = dQ;
  40.         this.qInv = qInv;
  41.     }
  42.     public BigInteger getPrivateExponent()
  43.     {
  44.         return d;
  45.     }
  46.     public BigInteger getPublicExponent()
  47.     {
  48.         return super.getExponent();
  49.     }
  50.     public BigInteger getModulus()
  51.     {
  52.         return super.getModulus();
  53.     }
  54.     public BigInteger getP()
  55.     {
  56.         return p;
  57.     }
  58.     public BigInteger getQ()
  59.     {
  60.         return q;
  61.     }
  62.     public BigInteger getDP()
  63.     {
  64.         return dP;
  65.     }
  66.     public BigInteger getDQ()
  67.     {
  68.         return dQ;
  69.     }
  70.     public BigInteger getQInv()
  71.     {
  72.         return qInv;
  73.     }
  74.     /**
  75.      * 进行DER编码
  76.      * @author 张荣华
  77.      */
  78.     public DERObject getDERObject()
  79.     {
  80.         ASN1EncodableVector  v = new ASN1EncodableVector();
  81.         v.add(new DERInteger(0));                    /* 版本为0 */
  82.         v.add(new DERInteger(getModulus()));
  83.         v.add(new DERInteger(getPublicExponent()));
  84.         v.add(new DERInteger(getPrivateExponent()));
  85.         v.add(new DERInteger(getP()));
  86.         v.add(new DERInteger(getQ()));
  87.         v.add(new DERInteger(getDP()));
  88.         v.add(new DERInteger(getQInv()));
  89.         v.add(new DERInteger(getQInv()));
  90.         return new DERSequence(v);
  91.     }
  92. }