標籤:
1 private static String getRSAPrivateKeyAsNetFormat(byte[] encodedPrivkey) { 2 try { 3 StringBuffer buff = new StringBuffer(1024); 4 5 PKCS8EncodedKeySpec pvkKeySpec = new PKCS8EncodedKeySpec( 6 encodedPrivkey); 7 KeyFactory keyFactory = KeyFactory.getInstance("RSA"); 8 RSAPrivateCrtKey pvkKey = (RSAPrivateCrtKey) keyFactory 9 .generatePrivate(pvkKeySpec);10 11 buff.append("<RSAKeyValue>");12 buff.append("<Modulus>"13 + CodeUtils.base64Encode(removeMSZero(pvkKey.getModulus().toByteArray()))14 + "</Modulus>");15 16 buff.append("<Exponent>"17 + CodeUtils.base64Encode(removeMSZero(pvkKey.getPublicExponent()18 .toByteArray())) + "</Exponent>");19 20 buff.append("<P>"21 + CodeUtils.base64Encode(removeMSZero(pvkKey.getPrimeP().toByteArray()))22 + "</P>");23 24 buff.append("<Q>"25 + CodeUtils.base64Encode(removeMSZero(pvkKey.getPrimeQ().toByteArray()))26 + "</Q>");27 28 buff.append("<DP>"29 + CodeUtils.base64Encode(removeMSZero(pvkKey.getPrimeExponentP()30 .toByteArray())) + "</DP>");31 32 buff.append("<DQ>"33 + CodeUtils.base64Encode(removeMSZero(pvkKey.getPrimeExponentQ()34 .toByteArray())) + "</DQ>");35 36 buff.append("<InverseQ>"37 + CodeUtils.base64Encode(removeMSZero(pvkKey.getCrtCoefficient()38 .toByteArray())) + "</InverseQ>");39 40 buff.append("<D>"41 + CodeUtils.base64Encode(removeMSZero(pvkKey.getPrivateExponent()42 .toByteArray())) + "</D>");43 buff.append("</RSAKeyValue>");44 45 return buff.toString().replaceAll("[ \t\n\r]", "");46 } catch (Exception e) {47 System.err.println(e);48 return null;49 }50 }51 52 private static String getRSAPublicKeyAsNetFormat(byte[] encodedPublicKey) {53 try {54 55 KeyFactory keyFactory = KeyFactory.getInstance("RSA");56 RSAPublicKey pukKey = (RSAPublicKey) keyFactory.generatePublic(new X509EncodedKeySpec(encodedPublicKey));57 58 StringBuffer buff = new StringBuffer(1024);59 buff.append("<RSAKeyValue>");60 buff.append("<Modulus>"61 + CodeUtils.base64Encode(removeMSZero(pukKey.getModulus().toByteArray()))62 + "</Modulus>");63 buff.append("<Exponent>"64 + CodeUtils.base64Encode(removeMSZero(pukKey.getPublicExponent().toByteArray())) + "</Exponent>");65 buff.append("</RSAKeyValue>");66 return buff.toString().replaceAll("[ \t\n\r]", "");67 } catch (Exception e) {68 System.err.println(e);69 return null;70 }71 }
把Java產生的RSA公開金鑰、私密金鑰轉換成.NET使用的XML格式