1 packagecom;2
3 importjava.security.KeyFactory;4 importjava.security.PublicKey;5 importjava.security.interfaces.RSAPrivateCrtKey;6 importjava.security.interfaces.RSAPublicKey;7 importjava.security.spec.PKCS8EncodedKeySpec;8 importjava.security.spec.X509EncodedKeySpec;9 //import org.castor.util.Base64Decoder;10 //import org.castor.util.Base64Encoder;
11
12 public classtest {13
14 public static voidmain(String[] args)15 {16 String tes="MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAL8z2QlXCL6w7rvY0Gbl8ARtQSXY+pEW5hlUHlmspqHt4k8/SkoF796gDqk4yyOcoWhkZWLPPugK35Mn7V+m5Jyfu8C0gVKOfWOA8A0T4hxV2ThAoMUq7QtB2K6s9AoumrxDfAkMBbsXEHYwfD/hxr/3DQ3lUvSFB6BnhiHEOyzpAgMBAAECgYEAol/9qRjorEjF9XEjSr9rHddKxEGIST8RGeF+BNnCiTHkRziQdlykYIO876jzmsKhsG3STB+EZLsXM3ls9RZefcsPF5mLOCSOCow3DikfCtAy4hntsU9JwpuYE0V4A+Sgfd24fatqbu+JxE2nvpSbAPczDOgBFPNfYBkhMiuZ/iECQQDzUeq7lFcIE4uWhRGveVFjNAGuSsW+q9GOwO7tS5YwuAIQ2M+XgYGRFo8xMC6V/9SfqJtmSU1zk72pMlYufIqHAkEAySqkcKbWuobq5I9KSQISq2qCuGKtj/iUFho4PCD1YxhnQ7gcHA4OpS1dRFjtXJYQPTX9be+mmypsCFIyofE5DwJBAPGZ20wahTh9v9Lbmq3z9n5ce3bGxAcJsHDg3d09eooxi8uSnL5BV5frII+k2f0TI9rMnlE4Y/FpN5+zXaOXAi0CQQCs3Aqfjo23jJWtPv/LSo+2YnjfblPMAgNmFrO532xc8axSgZMN/HpTL28UewHD7GMZ5hnWbPcSIFrir5c4luq7AkEAi90WdnZVPxtSTqkkLYbnh4Ro2WhdwRjkfyBxBZZx8hfaM6MfLPi3A0rw9DPOSB4M/BMchtEh3bXuI7bue2tG+A==";17 byte[] temp=b64decode(tes);18 String ver=getRSAPrivateKeyAsNetFormat(temp);//转换私钥
19
20 String tes1="MIGfMA0GCSqGSIb4DQEBAQUAA4GNADCBiQKBgQC/M9kJVwi+sO672NBm5fAEbUEl2PqRFuYZVB5ZrKah7eJPP0pKBe/eoA6pOMsjnKFoZGVizz7oCt+TJ+1fpuScn7vAtIFSjn1jgPANE+IcVdk4QKDFKu0LQdiurPQKLpq8Q3wJDAW7FxB2MHw/4ca/9w0N5VL0hQegZ4YhxDss6QIDAQAB";21 byte[] temp1=b64decode(tes1);22 String ver1=getRSAPublicKeyAsNetFormat(temp1);//转换公钥23 //String temp2= encodePublicKeyToXml(temp1);
24
25 }26
27 private static String getRSAPrivateKeyAsNetFormat(byte[] encodedPrivkey) {28 try{29 StringBuffer buff = new StringBuffer(1024);30
31 PKCS8EncodedKeySpec pvkKeySpec = newPKCS8EncodedKeySpec(32 encodedPrivkey);33 KeyFactory keyFactory = KeyFactory.getInstance("RSA");34 RSAPrivateCrtKey pvkKey =(RSAPrivateCrtKey) keyFactory35 .generatePrivate(pvkKeySpec);36
37 buff.append("");38 buff.append(""
39 +b64encode(removeMSZero(pvkKey.getModulus().toByteArray()))40 + "");41
42 buff.append(""
43 +b64encode(removeMSZero(pvkKey.getPublicExponent()44 .toByteArray())) + "");45
46 buff.append("
"
47 +b64encode(removeMSZero(pvkKey.getPrimeP().toByteArray()))48 + "
");4950 buff.append(""
51 +b64encode(removeMSZero(pvkKey.getPrimeQ().toByteArray()))52 + "");53
54 buff.append(""
55 +b64encode(removeMSZero(pvkKey.getPrimeExponentP()56 .toByteArray())) + "");57
58 buff.append(""
59 +b64encode(removeMSZero(pvkKey.getPrimeExponentQ()60 .toByteArray())) + "");61
62 buff.append(""
63 +b64encode(removeMSZero(pvkKey.getCrtCoefficient()64 .toByteArray())) + "");65
66 buff.append(""
67 +b64encode(removeMSZero(pvkKey.getPrivateExponent()68 .toByteArray())) + "");69 buff.append("");70
71 return buff.toString().replaceAll("[ \t\n\r]", "");72 } catch(Exception e) {73 System.err.println(e);74 return null;75 }76 }77
78 private static String getRSAPublicKeyAsNetFormat(byte[] encodedPrivkey) {79 try{80 StringBuffer buff = new StringBuffer(1024);81
82 PKCS8EncodedKeySpec pvkKeySpec = newPKCS8EncodedKeySpec(encodedPrivkey);83 KeyFactory keyFactory = KeyFactory.getInstance("RSA");84 RSAPublicKey pukKey=(RSAPublicKey) keyFactory.generatePublic(newX509EncodedKeySpec(encodedPrivkey));85 //RSAPrivateCrtKey pvkKey = (RSAPrivateCrtKey) keyFactory.generatePrivate(pvkKeySpec);86 //PublicKey publicKey =KeyFactory.getInstance("RSA").generatePublic(pvkKeySpec);
87 buff.append("");88 buff.append(""
89 +b64encode(removeMSZero(pukKey.getModulus().toByteArray()))90 + "");91 buff.append(""
92 +b64encode(removeMSZero(pukKey.getPublicExponent()93 .toByteArray())) + "");94 buff.append("");95 return buff.toString().replaceAll("[ \t\n\r]", "");96 } catch(Exception e) {97 System.err.println(e);98 return null;99 }100 }101 public staticString encodePublicKeyToXml(PublicKey key) {102 if (!RSAPublicKey.class.isInstance(key)) {103 return null;104 }105 RSAPublicKey pubKey =(RSAPublicKey) key;106 StringBuilder sb = newStringBuilder();107 sb.append("");108 sb.append("")109 .append(Base64.encode(pubKey.getModulus().toByteArray()))110 .append("");111 sb.append("")112 .append(Base64.encode(pubKey.getPublicExponent()113 .toByteArray())).append("");114 sb.append("");115 returnsb.toString();116 }117
118 private static byte[] removeMSZero(byte[] data) {119 byte[] data1;120 int len =data.length;121 if (data[0] == 0) {122 data1 = new byte[data.length - 1];123 System.arraycopy(data, 1, data1, 0, len - 1);124 } else
125 data1 =data;126 returndata1;127 }128 private static String b64encode(byte[] data) {129
130 String b64str = newString(Base64.encode(data));131 returnb64str;132 }133
134 private static byte[] b64decode(String data) {135 byte[] decodeData =Base64.decode(data);136 returndecodeData;137 }138 }